在C ++中,我是否需要在关闭程序之前释放内存

时间:2011-06-22 20:53:25

标签: c++

  

可能重复:
  Is it acceptable not to deallocate memory

这是一个普遍的问题。我有一些c ++桌面项目可以使用一些全局数据结构。我的问题是,在退出应用程序之前,我是否需要为这些数据结构释放内存?无论如何,应用程序关闭后,操作系统将破坏内存。

4 个答案:

答案 0 :(得分:7)

简短回答:否。,如果你足够迂腐(这是一件好事)......见编辑)

当程序退出时,程序分配的所有内存将由操作系统自动释放。

但是,养成在自己之后进行清理的习惯是很好的做法,所以当 必要时你不要忘记这样做。

编辑:根据@David Thornley对该问题的评论,并非所有操作系统都采用这种方式。我没有理由不相信,但我相信任何你可能遇到的消费者操作系统都会这样做。但是,除非您有特定的理由,否则永远不要依赖非标准功能,无论多么常见,这始终是最佳做法。

答案 1 :(得分:3)

是的,内存将由操作系统回收,但是,总是释放任何内存的内存是一个好习惯,这样您就可以检查程序中的内存泄漏。如果不这样做,使用像valgrind

这样的工具发现泄漏就更难了

答案 2 :(得分:2)

不,你没必要。就C ++而言,它不会导致未定义的行为。但是,习惯这不是一个好习惯。

答案 3 :(得分:2)

正如您所说,您的操作系统会释放程序在程序终止时使用的所有内存,因此原则上您不必担心这一点。有人甚至可能会争辩说,操作系统可以一次性完成工作,而不是一件一件地完成工作。

如果你确切地知道你最后留下了哪些全局物品,那就绝对没问题了。

总是编写完全彻底终止的代码以避免忽略实际泄漏可能是一种好习惯;这取决于您对代码的信心。