<分区>
在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;
}
<分区>
在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/