我正在使用一个程序,其中我的代码调用第三方库,它使用boost和shared_pointers创建一个庞大而复杂的结构。这个结构是在我调用的方法中创建的,并且在方法结束时我知道程序已经完成。 对于我处理处理代码的大型示例需要30分钟,并且在退出时自动调用的boost代码需要几个小时。退出程序而不释放内存并花费所有时间将是一个完全可以接受的结果。 我试过 vector * iddListV = new vector(); //这将会泄漏存储器 并将所有相关结构添加到矢量中,但这没有帮助。我也试着调用exit(0);在到达子程序结束之前。这也会导致boost代码花费数小时试图释放指针。 如何在不调用boost析构函数的情况下突然退出C++程序(Windows上的Microsoft C++)。 我的约束是我可以在boost结构分配之前调用任何函数,但是一旦它开始运行就不能修改代码。boost :: shared_pointer退出,但没有调用release
0
A
回答
1
_Exit
退出时不调用任何析构函数。
0
如果您不关心可移植性,可以致电TerminateProcess()
。但请记住保证你是绝对确保你的程序处于准备终止的状态。例如,如果在I/O有机会刷新之前终止,则文件数据和网络流可能会失效。
0
这是可能的,可移植的方式,要做到:
#include <exception>
...
std::terminate();
然而,有一个大的疑难杂症,在那,至少在Linux上,这可能会导致核心转储。 (我真的不确定Windows上的行为是什么)。
应该注意的是,行为是定义的,只要是否调用析构函数。选址§15.5.1P2:
在用于一个处理器(15.3)的搜索中遇到的函数的最外 块以noexcept规格,它 不允许异常(15.4)的情况下,它是 std :: terminate()被调用之前,是否实现定义是否 堆栈解开,部分展开,或者根本没有展开。
此外,在§18.8.3.4P1:
备注:由实现调用时的异常处理必须 放弃了任何的几个原因(15.5.1),立即生效 后评估投掷表达式(18.8.3.1)。也可以直接由程序调用 。
C++ 11还定义了函数std::quick_exit(int status)
,它可以类似的方式使用(可能没有coredump)。该功能可从<cstdlib>
获得。
相关问题
- 1. boost Shared_pointer NULL
- 2. jQuery的微调ui.value没有退出值
- 3. 方法没有调用,但没有出现错误
- 4. 使用D3D,在退出我的过程之前是否需要调用release?
- 5. 任何退出状态,没有明确使用返回/退出
- 6. Sinatra退出没有错误
- 7. release()没有声明C++
- 8. 将子shared_pointer投射到父shared_pointer C++ 14
- 9. 无法在Release中构建CocoaPods,但在调试时没有问题
- 10. 我退出()脚本,但它不退出
- 11. 用户退出没有任何异常
- 12. Mercurial HG'pretxncommit.whitespace hook退出状态1'但没有指定钩子
- 13. 有没有boost :: weak_intrusive_pointer?
- 14. 如何从助推库中取出单个元素(例如shared_pointer)?
- 15. UITableView有没有退出编辑模式?
- 16. 有没有办法退出Greasemonkey脚本?
- 17. 退出浏览器调用
- 18. Silverlight退出时调用webservice
- 19. 调用'release'太多次了?
- 20. KeyNotFoundException,但调试时没有
- 21. 为什么我的Winforms应用程序意外退出,但没有错误?
- 22. Application_Error被调用,但没有异常
- 23. react.js setState调用密钥但没有值?
- 24. SEGUE调用但没有被解雇
- 25. 的NodeJS:child_process.spawn没有报告退出代码
- 26. jquery和colorbox - 没有退出按钮?
- 27. 导航后活动UI没有退出
- 28. my_thread_global_end线程没有退出,错误?
- 29. 退出没有在脚本中执行
- 30. 如何退出Python而没有追溯?
我使用的是C++ 11的版本,但是确实可以让你提供一个定制的删除器吗? – chris 2013-04-03 21:34:47
@chris是的,有[助推文档](http://www.boost.org/doc/libs/1_53_0/libs/smart_ptr/shared_ptr。htm#deleter_constructor) – helloworld922 2013-04-03 21:42:35
好奇,你有没有尝试分析,看看为什么有一个问题? – 2013-04-03 23:15:35