C++中的内存泄漏
目录
1、new(malloc)和delete(free)没有配套使用
在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存
这种是最简单,最直接的内存泄露,很容易发现
2、类的构造函数和析构函数中new等没有配套使用
在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存
3、没有正确地清除嵌套的对象指针
如下:
int* a = new int;
int** b = new int*;
*b = a;
这样的情况下,如果你先把b释放了,a自身的值就没了,导致a原来申请的空间现在没人管了,造成了内存泄漏。
4、在释放对象数组时在delete中没有使用方括号
这个其实有个经典的例子,再说例子之前先说一下基本知识
在使用new,来创建一个指向class的指针的时候,new做的事情有三个:
- 分配内存
- 指针转型
- 调用构造函数
其中第二个这里不讨论,然后再看delete