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