c - 如果在C中退出(exitcode)会发生内存泄漏?

标签 c memory memory-leaks exit exit-code

<分区>

在C程序中,如果程序执行完exit(100);后还有动态分配的内存没有释放,会不会有内存泄露的问题?例如:

int main (void) {
    char str1[] = "Hello World"
    char *str2;
    str2 = malloc(strlen(str1 + 1));

    if (str2) 
        exit(101); // memory leaks?

    free(str2);
    return 0;
}

最佳答案

不是在现代操作系统下,不是。当进程死亡时,操作系统会自动收集所有内存。

事实上,如果程序无论如何都在退出,那么释放内存实际上会对性能产生不利影响。原因是调用 free 有时会涉及很多工作 - 更新很多结构,接触缓存行等。通过简单地退出,你不会做所有这些用户空间的废话,操作系统实际上会处理取消映射您的数据。

关于c - 如果在C中退出(exitcode)会发生内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15495004/

相关文章:

c++ - 映射导致段错误。如何增加内存力?

c - Newlib 的 Malloc 是 "ignoring"一大堆空闲内存

linux - 如何找到哪个进程正在泄漏内存?

c - 有什么系统的方法可以避免 "reentry"问题? (嵌入式系统)

c - Linux C语言管道、 fork 和信号

c# - 程序占用太多内存

linux - ARM/Linux内存泄漏: Can a user program retain memory after terminating?

c - C 套接字读取函数造成内存泄漏

c - 未初始化的数组如何影响结果? (无需调试)

php - 如何使用 C 和 G-wan 网络服务器设置和读取 cookie