在程序崩溃时,如何使用诸如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