赞
踩
"" 一般代表用户提供的头文件,查找时从当前文件目录开始寻找。(windows是当前路径下找,linux有些区别)
<> 标准工程文件,会检查预定义宏,通过设置的搜索路径环境变量修改路径。
- int a = 1;
- int b = 2;
- int c = 3;
-
- // 读法,谁在前,先读谁
- int const *p1 = &b; // 常量指针
- int *const p2 = &c; // 指针常量
-
- p1 = &a; // 允许
- *p1 = a; // 错误
-
- p2 = &a; // 错误
- *p2 = a; // 允许
p1先和*结合,是指针,然后被const修饰*p1,所以指向的值不可以改变。
p2先和const结合,const修饰p2指针。
没有释放掉不再使用的内存,失去对该段内存控制,造成内存浪费。
1. 堆内存泄露(new malloc后,没有delete或者free掉)
2. 系统资源内存泄露
3. 基类的析构函数没有定义为虚函数
4. 释放数组时,使用了delete而不是delete[]
1. linux下,使用valgrind工具
2. 统计new delete次数
举例:智能指针互相指向,类似死锁
获取参数类型信息,用法:
- std::cout << typeid(int).name() << std::endl;
-
- // 判断是不是某种类型
- if(typeid(1.1) == typeid(float))
- {}
应该尽量避免构造函数抛出异常,否则析构函数不会执行,可能导致内存泄露。
不可以,可能导致内存泄露。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。