C语言 在结束程序之前必须执行free(string)操作



假设我设置了一个指针,以便有一个字符串,例如:

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

有必要在程序结束前做一个free(string)吗?正如我在man中看到的,getline调用malloc(),我假设它。

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

当进程终止时,内存将被操作系统回收,所以这无关紧要,除非你的可用内存很低。但是,如果您正在编写将在后台运行的软件,例如守护进程,那么使用free来释放内存是非常重要的。

建议(几乎普遍)正确的方法(tm)是free您的内存,而不是依赖于操作系统来回收空间。

没必要。

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

不可能给出一个你应该或不应该的通用答案:这是每个项目必须做出的选择,取决于它自己的情况。

相关内容

  • 没有找到相关文章

最新更新