C++中的内存泄漏

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做的事情有三个:

  1. 分配内存
  2. 指针转型
  3. 调用构造函数

其中第二个这里不讨论,然后再看delete

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值