【原创】常见的内存错误以及如何避免

 

 C++中支持指针操作,一方面极大限度的提高了编程灵活性,但同时带来了安全隐患

 

通常的内存错误被归结为以下4点:内存泄露重复释放坏指针问题超量写内存

 

1.内存泄露

在分配了一块内存空间后,如果不再需要这些数据就应当考虑将其释放。

如果被分配的内存空间不再需要时且程序员没有将其释放,那么这块空间将随同程序运行而一直存在。

这在极少情况下也有可能是正常的,但更多的时候是非常危险的。

对于一个需要运行较长时间的程序而言,如果它只是一味的分配而不进行回收,那么系统资源无疑将被耗尽。

 

内存的泄露通常是由回收失败导致的,如下面的例子:

 

异常,错误和其他各种throwcatch语句经常是导致内存泄露的原因

 

还有一种可能引起内存泄漏的原因是忘记了释放一个数据结构的某些部分,例如定义以下结构

在上例中,一个Student结构体被分配了内存并在程序结束的时候被释放,但是这个结构体的一些域并没有被释放

例如nameaddress都被分配了空间,但他们没有被释放。

注意:结构体被释放并不表示它的域也被释放了

 

 

2.重复释放

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值