首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于内存泄漏,该如何解决

2012-07-27 
关于内存泄漏内存泄漏是什么情况呢?是申请了内存在用完后没有释放么还是定义了指针后用完没有PNULL?结构

关于内存泄漏
内存泄漏是什么情况呢?是申请了内存在用完后没有释放么还是定义了指针后用完没有P=NULL?结构体的对象要不要释放?结构体 的对象名是不是也像数组名一样是结构体的初地址呢??


[解决办法]
1、内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元
2、好习惯是再释放内存后将指针赋值NULL
3、看你是否是为对象动态申请内存,如果不是则不用,系统自动收回
4、是
[解决办法]
内存泄漏是什么情况呢?
new / malloc这类动态内存分析函数会在程序运行过程中向操作系统索要内存。用完不还,就叫泄露。会导致操作系统内存被浪费掉。

是申请了内存在用完后没有释放么还是定义了指针后用完没有P=NULL?
是指没有释放。释放完成后P=NULL是一个好习惯,会给你加分的!

结构体的对象要不要释放?
要不要释放,主要取决两个条件:
1. 它是否采用new/malloc这样的动态分配机制。
2. 你是否确实不再需要这个对象了。

结构体 的对象名是不是也像数组名一样是结构体的初地址呢??
不是。结构体的对象名就是一个普通变量名,其地址必须使用&来取。
[解决办法]
最后一点我说错了,是的要用取地址符号&才行

探讨

内存泄漏是什么情况呢?
new / malloc这类动态内存分析函数会在程序运行过程中向操作系统索要内存。用完不还,就叫泄露。会导致操作系统内存被浪费掉。

是申请了内存在用完后没有释放么还是定义了指针后用完没有P=NULL?
是指没有释放。释放完成后P=NULL是一个好习惯,会给你加分的!

结构体的对象要不要释放?
要不要释放,主要取决两个条件:
1. 它是否采用new/ma……

[解决办法]
楼上的回答都有点问题,内存泄露不是说你用完了内存不还,而是说你用过的内存地址头指针被你自己丢掉了,没有办法归还系统,举个例子:

*p = malloc(10);
*p = null;

上面这样的程序运行完后你向系统申请的10个字节就丢掉了,因为你不知道他们的首地址,永远没有办法释放,而系统那边由于将这10个字节分配给你使用了从而永远无法收回,这10个字节就泄露了。

我觉得内存泄露应该这样描述才正确。

热点排行