如果用C语言编写一个程序用了malloc函数但是没用free函数,那整个程序结束后泄漏的内存会被收回吗?

如果用C语言编写一个程序用了malloc函数但是没用free函数,那整个程序结束后泄漏的内存会被收回吗?

会程序结束后泄漏的内存会被收回的。因为程序结束后,该程序所占用的所有的内存都会被收会。程序所用的内存包括静态变量和动态变量,动态变量可以在程序中用malloc和free动态修改程序所占用的内存空间,静态变量则在它一开始定义到程序结束前都会占用内存空间,直到程序结束时才会被释放。malloc函数是在程序中动态向系统申请内存单元,不用这些单元时,可以用free函数动态释放,这样程序所占用的内存就会减少,假如没用free函数释放,那程序所占用的内存不会减少,但到程序结束时,它所占用的内存单元(包括静态变量和动态变量等)都会全部被系统收会。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-17
会被回收。

但是,如果你的程序是一个服务,要常年运行。在服务运行期间,如果一直存在这样的问题,那么你的内存会被用尽。强烈建议你释放掉。

为了一个好的编程习惯,也应该释放,你说对吧?
第2个回答  2010-12-17
会 程序运行结束后 所有关于当前进程的资源全部会被释放 甚至如果你使用GCC编译器 在设置了编译等级后 你在函数中malloc的内存 在函数执行结束时 如果你不free 程序也会自动为你释放以避免内存泄露(这个过程时编译器在编译时自动为你加上去的 你可以参考gcc手册) 但无论如何 都请不要这样做 因为这样很不专业 而且会引起很多未知的问题
第3个回答  2010-12-17
不会,这样就回造成内存泄漏.
第4个回答  2010-12-17
程序结束时会析构所有变量并释放空间,所谓的内存泄露只存在与程序运行时
相似回答