繁体   English   中英

当遇到exit(1)时,malloc的内存会发生什么?

[英]What happens to the malloc'ed memory when exit(1) is encountered?

在C中,如果我使用malloc分配内存并且在执行期间,程序遇到异常/错误并在程序中使用手动合并的exit(1)语句exit(1) ,C编译器会在意外退出之前自动释放内存或我是否必须在程序中的exit(1)行之前手动执行此操作。

我在Ubuntu 32bit平台上使用gcc-4.5.2编译器。

一旦调用exit ,OS就会恢复所有已分配的内存。 所以不需要free打电话。

编辑:但通常很好的做法是释放您在程序中分配的内存,因为您可能会忽略将来修改它时的免费调用。

在一个设计良好的操作系统上,当进程退出时(使用exit(),die(),abort()或raise()或被错误,信号或其他任何东西杀死),操作系统应该自由up进程使用的所有资源,包括堆栈空间,堆,分配的内存(通常在堆上),关闭打开的文件描述符(如果它是* NIX系统)等。

但是,我不会去'不需要免费电话()'。 这是一个糟糕的编程/设计概念,如果你没有显式释放()内存,你有malloc()'ed尽管你最终可以依靠操作系统为你做这个,它可能会导致内存泄漏,当你以后修改你的项目不要退出,但你忘了释放()你用过的记忆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM