在结束程序之前有必要做一个免费的(字符串)吗?

时间:2016-11-06 21:22:43

标签: c string malloc free

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

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

在结束程序之前是否需要执行free(string)? 正如我在man中看到的那样,getline调用了malloc()而我认为它。

2 个答案:

答案 0 :(得分:4)

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

当进程终止时,操作系统将回收内存,因此除非您的可用内存不足,否则它并不重要。但是,如果您正在编写将在后台运行的软件,例如守护程序进程,则使用free释放内存非常重要。

建议(几乎普遍)正确的方式(tm)是free你的记忆,而不是依靠操作系统来回收那个空间。

答案 1 :(得分:-1)

没有必要。

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

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