相关疑难解决方法(0)

程序结束时释放块没有意义吗?

可能重复:
在C中退出程序时释放所需的内存

我正在阅读"Freeing Memory Allocated with malloc"页面,并且遇到了这句话:

在程序结束时释放块是没有意义的,因为当进程终止时,所有程序的空间都会返回给系统.

我意识到作者试图说的是什么,但句子不应该是:

在程序结束时释放块是没有意义的,因为当进程终止时,所有程序的空间都会返回给系统,尽管你仍然应该确保程序在退出之前释放所有malloc的内存.

或者通常的做法是在流程终止之前不取消分配内存?

c malloc free

3
推荐指数
2
解决办法
3746
查看次数

为什么我要 free() 一个由 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 之后不释放时真正会发生什么?我不必这样做,因为操作系统会在程序终止后自动释放占用的内存。

但是当时为什么我的老师要我这样做呢?这样做有什么好处吗?

c malloc free memory-management heap-memory

0
推荐指数
1
解决办法
131
查看次数

标签 统计

c ×2

free ×2

malloc ×2

heap-memory ×1

memory-management ×1