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

C++ 在C++;,关闭程序之前是否需要释放内存,c++,C++,可能重复: 这是一个一般性问题。我有一些C++桌面项目,它可以处理一些全局数据结构。我的问题是,在退出应用程序之前,是否需要释放这些数据结构的内存?无论如何,应用程序关闭后,操作系统将破坏内存。简短回答:否。(是,如果你足够学究(这是件好事)…请参阅编辑) 当程序退出时,操作系统将自动释放程序分配的所有内存 然而,养成自己打扫卫生的习惯是一个很好的习惯,这样你就不会忘记在必要的时候这样做 编辑:根据@David Thornley对这个问题的评论,并非所有操作系统都是这样运行的。我没有理由不相信

可能重复:


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

简短回答:否。,如果你足够学究(这是件好事)…请参阅编辑)

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

然而,养成自己打扫卫生的习惯是一个很好的习惯,这样你就不会忘记在必要的时候这样做


编辑:根据@David Thornley对这个问题的评论,并非所有操作系统都是这样运行的。我没有理由不相信这一点,但我确实相信您可能遇到的任何消费者操作系统都会这样做。然而,最好的做法是永远不要依赖非标准功能,无论它多么常见,除非你有这样做的具体原因。

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

是的,操作系统会回收内存,但是,最好总是释放所有内存,以便检查程序中的内存泄漏。如果不这样做,使用valgrind之类的工具很难发现漏洞。正如您所说,您的操作系统会释放程序终止时使用的所有内存,因此原则上您不必担心这一点。有人甚至可能会争辩说,操作系统一次完成这项工作的速度比你一块一块地完成这项工作的速度要快

如果您确切地知道哪些全局对象在最后悬空,那么这是绝对正确的


编写完全干净地终止的代码可能是一种好的做法,以避免忽略实际的泄漏;这取决于您对代码的信心。

并非所有操作系统都会这样释放内存,因此不释放内存可能是一个坏习惯。它也不适合长时间运行的程序。你能提供一个没有释放的操作系统的例子吗?你能解释一下你的第二句话吗?