gpt4 book ai didi

c - 我应该在退出前释放内存吗?

转载 作者:太空狗 更新时间:2023-10-29 16:27:35 26 4
gpt4 key购买 nike

当我因错误退出程序时,是否应该释放所有分配的内存?

something = (char**) malloc (x * sizeof(char*));
for (i = 0; i < x; i++)
something[i] = (char*) malloc (y + 1);

...

if (anything == NULL) {
printf("Your input is wrong!");
// should I free memory of every mallocated entity now?
exit(1);
}
else {
// work with mallocated entities
...
free(something); // it must be here
system("pause);
}

最佳答案

这实际上是一个非常难、无法估量的问题。

Pro(支持在退出前释放所有内容):

  • 如果重新安排代码,以后不会出现错误或内存泄漏
  • 没有来自 valgrind 或内存泄漏检查器的误报
  • 如果您在有缺陷的操作系统或根本没有操作系统下运行,则不会出现内存泄漏

Con(直接退出,不用担心释放所有东西):

  • 释放一切可能需要大量工作
  • 释放一切可能会引入错误和崩溃
  • 您的操作系统确实应该在您退出时为您回收所有资源

还有一点(不确定是赞成还是反对):在大多数系统上,调用 free 不会将内存返回给操作系统(只有退出才会那样做)。

最后,您必须决定哪些利弊对您来说最重要。不同的程序员在不同的情况下对不同的项目会得出不同的结论;这里没有放之四海而皆准的答案。

另见 this previous Stack Overflow question .另见 question 7.24C FAQ list .

关于c - 我应该在退出前释放内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36584062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com