簡體   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