可能重复:
在C中退出程序时释放所需的内存
我正在阅读"Freeing Memory Allocated with malloc"页面,并且遇到了这句话:
在程序结束时释放块是没有意义的,因为当进程终止时,所有程序的空间都会返回给系统.
我意识到作者试图说的是什么,但句子不应该是:
在程序结束时释放块是没有意义的,因为当进程终止时,所有程序的空间都会返回给系统,尽管你仍然应该确保程序在退出之前释放所有malloc的内存.
或者通常的做法是在流程终止之前不取消分配内存?
我总是被告知释放由malloc()以下分配的堆内存:
#include <stdlib.h>
#define width 5
int main(void)
{
char* ptr = malloc(sizeof(*ptr) * width);
/* some stuff with the heap object */
free(ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是现在我已经阅读了当您在 malloc 之后不释放时真正会发生什么?我不必这样做,因为操作系统会在程序终止后自动释放占用的内存。
但是当时为什么我的老师要我这样做呢?这样做有什么好处吗?