繁体   English   中英

c ++程序在崩溃时会自动释放内存吗?

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

我读过谷歌c ++编码标准,谷歌不使用例外。 如果未使用异常,如何在程序中发生错误时释放内存?

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

如果没有使用异常,并且如果g()中有错误,我可以强制退出exit(0) ,并且c ++程序是否足够智能以释放所有已分配的内存? 我的猜测是,因为c ++维护堆栈和堆,一旦程序退出,c ++会自动释放堆栈和堆吗?

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

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

此外,永远不要遵循谷歌的风格指南。 它不适用于C ++,它适用于C ++减去你必须带走的所有东西才能制作它。它可能适用于谷歌(可疑),但绝对不会对任何其他人有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM