当前位置: 技术问答>linux和unix
进程内存泄漏的问题
来源: 互联网 发布时间:2014-12-12
本文导语: 如果我在进程中分配内存,但不释放,而进程又结束了。这些内存怎么办?是不是无论有多少泄漏,只要进程结束,就都释放了? | 程序结束退出的时候,这个程序用malloc分配的空间也就释放...
如果我在进程中分配内存,但不释放,而进程又结束了。这些内存怎么办?是不是无论有多少泄漏,只要进程结束,就都释放了?
|
程序结束退出的时候,这个程序用malloc分配的空间也就释放了。
如果你的程序运行一次就退出,那么可以不必free;但如果是个服务进程,循环处理的话,就需要free了。不然多次malloc的空间总和超过一定限度,系统就不给分配空间了。
从编程习惯的角度看,还是养成以下的习惯:只要有malloc的地方,就必须要有一个free的语句对应。
如果你的程序运行一次就退出,那么可以不必free;但如果是个服务进程,循环处理的话,就需要free了。不然多次malloc的空间总和超过一定限度,系统就不给分配空间了。
从编程习惯的角度看,还是养成以下的习惯:只要有malloc的地方,就必须要有一个free的语句对应。
|
首先内存泄漏是指指针超出范围而使函数返回不了,重在超出范围,很危险
申请内存而不释放该内存将变成垃圾,即使进程结束,除非进程知道指针指向什么地方,否则不会释放
如:char *p;
p=malloc(100);//第一次
p=malloc(100);//再来一次
那么现在第一次申请的内存将不能释放而变成垃圾
申请内存而不释放该内存将变成垃圾,即使进程结束,除非进程知道指针指向什么地方,否则不会释放
如:char *p;
p=malloc(100);//第一次
p=malloc(100);//再来一次
那么现在第一次申请的内存将不能释放而变成垃圾
|
在linux下,系统经自动释放使用malloc分配的内存单元
|
我同意wiler(贼狼)的观点,一般申请内存后,都需要free掉。