C++内存泄漏的常规问题和解决办法

问题:C++内存泄漏:

原因: 内存错误和并非问题。

1,内存泄漏:堆栈内存没有释放,(少量一般无事);(大量内存泄漏)导致内存耗尽,后续分配内存失败,程序奔溃。(少量内存泄漏),程序运行时间长久,也容易奔溃。

2,内存越界访问:(1)读越界,读取不是自己的数据。读取地址无效,程序直接奔溃。读取地址有效,但是数据是随机的,虽然读取成功,但是会发生不可以预料的后果。(2)写越界,或者可以叫做缓存区溢出,因为所写的数据随机,所以后果未知。

3,野指针:释放掉的内存会被内存管理器重新分配内存。此时它(野指针)指向的内存已经被赋予了新的意义。对野指针指向的内存访问,同样会发生不可预知的后果。解决野指针最好的方法:释放内存后立即把对应指针置为空值。

4,空指针:访问空指针指向的内存,一般会导致程序奔溃,或者未知的后果。所以在访问指针指向的内存时,一定要保证指针不是空指针。

5,引用未初始化的变量:未初始化变量的内容是随机的,使用这些数据会造成未知的后果。最好的解决办法:在声明变量的时候就对它进行初始化。

6,不清楚的指针运算:如:int *p=....;p+n等价于(size_t)p+n*sizeof(*p);

7,结构体成员顺序变化引发的错误

8,结构体大小变化引发的错误

9,分配释放不配对

10,返回指向临时变量的指针
栈里面的变量时临时的,当前函数执行完成时,先关的临时变量和参数都被清除了。不能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值