在程序崩潰時,如何使用諸如unique_ptr的智能指針知道釋放資源的C++項目?智能指針如何知道何時釋放程序崩潰時的資源?
1
A
回答
8
如果程序由於處理異常而「優雅地」崩潰,堆棧展開將調用任何智能指針上的析構函數並釋放內存。
對於完整的崩潰(例如段錯誤,請致電std::terminate()
),操作系統將釋放程序保存的任何內存和資源。
1
當C++程序崩潰時,它退出。操作系統清除它可能要求的任何操作系統資源,其中包括內存,但也包括其他資源(例如文件句柄)。
因此,C++不會清理 - 操作系統。曾經是C++堆作爲可用內存返回到操作系統。
相關問題
- 1. 如何以及何時釋放指針中的資源
- 2. 智能指針釋放FinalRelease明確
- 3. 崩潰未知原因指針被釋放
- 4. 釋放內存時崩潰
- 5. Android:應用程序終止時如何釋放資源?
- 6. 當指針未知時,如何在C中釋放內存?
- 7. 關機時釋放資源
- 8. 如何釋放進程的資源
- 9. 指針不指向指針時發生指針崩潰
- 10. 在進程終止時釋放資源
- 11. 在C++中使用帶有矢量的智能指針時崩潰
- 12. 如何知道我的程序上次運行時是否崩潰?
- 13. UIWebView在資源加載時崩潰的應用程序
- 14. 嘗試檢索指針的內容時程序崩潰
- 15. 使用指針打印結構時的應用程序崩潰
- 16. 如何知道Linux中程序崩潰的地址?
- 17. 應用程序崩潰時釋放appDelegate實例
- 18. C++程序在崩潰時會自動釋放內存嗎?
- 19. 空「釋放」ASSERT宏崩潰程序?
- 20. 從互聯網下載資源時iOS應用程序崩潰
- 21. 調用嵌入式資源時應用程序崩潰
- 22. QListWidgetItem指針導致程序崩潰
- 23. 不知道爲什麼程序崩潰
- 24. 空指針獲得資源時,如流
- 25. 如何在應用程序崩潰時捕獲崩潰
- 26. 釋放空指針數組,釋放第一個元素後崩潰
- 27. 釋放應用程序中的資源?
- 28. 如何知道按鈕何時被釋放?
- 29. 如何知道何時在Python中管理資源
- 30. 如何跟蹤使用智能指針時的內存分配
你想查找堆棧展開。並且更準確地定義_crash_。無論如何,如果程序中止所有的內存將會到達操作系統。 –
這取決於「崩潰」 - 終止不會展開堆棧,因此析構函數不會被調用。這裏有一些人格思考(關於RAII):http://stackoverflow.com/questions/76796/general-guidelines-to-avoid-memory-leaks-in-c/77893#77893 – doctorlove