c++程序在崩溃时是否自动释放内存?

Does a c++ program automatically free memory when it crashes?

本文关键字:释放 内存 是否 程序 崩溃 c++      更新时间:2023-10-16

我在Google c++编码标准中读到Google不使用exception。如果不使用exception,当程序中出现错误时,如何释放内存?

例如,f()调用g(),如果g()中有错误,我应该释放在g()中分配的所有内存,然后调用f()的异常。一旦f()捕获异常,f()将释放在f()中分配的所有内存,并退出程序。

如果不使用exception,如果g()中有错误,我可以强制退出exit(0)吗? c++程序是否足够聪明,可以释放所有分配的内存?我的猜测是,由于c++维护堆栈和堆,一旦程序退出,c++将自动释放堆栈和堆。

当进程因任何原因终止时,操作系统将清除所有已使用的内存和文件句柄。

我听说一些内存类型,比如在Windows上,COM全局堆内存不能为您释放。然而,大多数内存/句柄被清理,因为操作系统必须处理应用程序崩溃的情况。在进程本地内存和大多数句柄(如文件句柄等)的情况下,您当然可以保证它。一般情况下,你可以假设当你的应用程序退出时,操作系统会在你退出后进行清理。

还有,永远不要遵循谷歌的风格指南。它不是为c++设计的,它是为c++设计的,它减去了制作C的所有东西。它可能适用于Google(值得怀疑),但绝对不适用于其他任何人。