Rob*_*rtS 0 c malloc free memory-management heap-memory
我总是被告知释放由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 之后不释放时真正会发生什么?我不必这样做,因为操作系统会在程序终止后自动释放占用的内存。
但是当时为什么我的老师要我这样做呢?这样做有什么好处吗?
但是当时为什么我的老师要我这样做呢?这样做有什么好处吗?
想想如果你的程序是一个长时间运行的进程会发生什么——比如,一个数据库服务器——并且在它内部的某个地方有一个不断分配内存的函数——比如每次处理查询时——但从不释放它. 或者,更平凡的桌面应用程序,例如您希望在处理某事时继续运行的文字处理器。
是的,操作系统将在进程终止后释放进程使用的所有资源。但许多程序都不是短命的。
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |