Abh*_*nav 5 c malloc free memory-leaks exit
在C中,如果我使用malloc和在执行期间分配内存,程序遇到异常/错误并退出exit(1)程序中手动合并的语句,C编译器是否会在意外退出之前自动释放内存或者是否必须手动exit(1)在程序中的行之前执行此操作.
我在Ubuntu 32bit平台上使用gcc-4.5.2编译器.
P.P*_*.P. 11
一旦你打电话exit,OS就会收回所有分配的内存.所以没必要打电话free.
编辑:但通常很好的做法是释放您在程序中分配的内存,因为您可能会忽略将来修改它时的免费调用.
小智 6
在设计良好的操作系统上,当进程退出时(使用exit(),die(),abort()或raise()或被错误,信号或其他任何东西杀死),操作系统应该自由up进程使用的所有资源,包括堆栈空间,堆,分配的内存(通常在堆上),关闭打开的文件描述符(如果它是*NIX系统)等.
但是,我不会去'不需要免费电话()'.这是一个糟糕的编程/设计概念,如果你没有显式释放()内存,你有malloc()'ed虽然你最终可以依靠操作系统为你做这个,它可能会导致内存泄漏,当你以后修改你的项目不要退出,但你忘了释放()你用过的记忆.