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