有必要在程序结束前做一个 free(string) 吗?

Is necessary to do a free(string) before end a program?

假设我设置一个指针是为了有一个字符串,eg:

char *string = NULL;
size_t size = 0;
getline(&string, &size, stdin);

是否有必要在程序结束前做一个free(string)? 正如我在 man 中看到的那样,getline 调用了 malloc(),我已经猜到了。

为确保您的软件没有任何内存泄漏,是的,您应该为动态分配的任何内存调用 free

内存将在进程终止时由 OS 回收,因此这无关紧要,除非您 运行 可用内存不足。但是,如果您正在编写将 运行 在后台运行的软件,例如守护进程,则使用 free 释放内存非常重要。

建议(几乎普遍)正确的方法 (tm) 是 free 你的记忆,而不是依赖 OS 来回收 space。

没有必要。

如另一个答案中所述,有一些很好的理由。但也有一些不这样做的原因:执行释放的代码需要额外的时间来编写、调试和维护,并且是额外的潜在错误来源。

不可能给出一个你应该或不应该的普遍答案:这是每个项目必须根据自己的情况做出的选择。