避免内存泄露、迷途指针

 

内存泄露产生:没有释放在堆中申请的内存。

从makecat函数返回一个指针,之后再main函数里释放内存。

我认为,最好封装在函数里,new和delete看起来才有对称感。

还需要再改进。

 


既然提到了,就说一下迷途指针和内存泄露的原理和避免方法:

 

迷途指针:将delete用于指针,但没有将指针置为空而引发的。说白了,就是搞不清指针指向的内存是否被释放了。(这时,如果再次释放,或者让指针指向别的内存地址,都可能会导致内存泄露。)避免的方法是养成良好的编程习惯:申请指针的时候就对指针进行初始化,如果不知道初始值是什么,就先置0;同理,delete删除指针指向的内存后,也要把指针重新置0,这时,如果对空指针delete,编译器会自动跳过不执行。

内存泄露:1,重复delete。2,引用局部函数的变量。3,重新给指针赋值之前没有释放它原来指向的内存。

说白了,就是没有释放在堆中申请的内存,就是把内存的地址丢了。如果把内存比作房子,指针比作门牌号。就是把门牌号忘记了。

好的习惯是,结合初始化指针的习惯和置0指针的习惯,每次让指针指向别的内存之前,先判断该指针是否为空。如果不为空,说明指针还留着别的地址。其实如果new和delete养成对称的习惯,就不会导致内存泄露的。


 

早发现错误,早修正bug。

做个有良好编程习惯的程序员。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值