假设我设置了一个指针,以便有一个字符串,例如:
char *string = NULL;
size_t size = 0;
getline(&string, &size, stdin);
有必要在程序结束前做一个free(string)
吗?正如我在man中看到的,getline调用malloc()
,我假设它。
为了确保你的软件没有任何内存泄漏,是的,你应该为你动态分配的任何内存调用free
。
当进程终止时,内存将被操作系统回收,所以这无关紧要,除非你的可用内存很低。但是,如果您正在编写将在后台运行的软件,例如守护进程,那么使用free
来释放内存是非常重要的。
建议(几乎普遍)正确的方法(tm)是free
您的内存,而不是依赖于操作系统来回收空间。
没必要。
有一些很好的理由,正如另一个答案所描述的那样。但是也有一些不这样做的理由:执行释放的代码需要额外的时间来编写、调试和维护,并且是额外的潜在bug来源。
不可能给出一个你应该或不应该的通用答案:这是每个项目必须做出的选择,取决于它自己的情况。