我正在使用一個程序,其中我的代碼調用第三方庫,它使用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. segfault退出(EXIT_FAILURE)但沒有錯誤(EXIT_FAILURE,...)
- 3. jQuery的微調ui.value沒有退出值
- 4. iOS:self.object = nil在調用release時沒有調用dealloc
- 5. 連接boost庫時程序退出時沒有錯誤
- 6. 方法沒有調用,但沒有出現錯誤
- 7. 使用D3D,在退出我的過程之前是否需要調用release?
- 8. 在visual C++的Release模式下使用boost的調試庫
- 9. 退出()調用pthread_mutex_lock()
- 10. 任何退出狀態,沒有明確使用返回/退出
- 11. Sinatra退出沒有錯誤
- 12. 程序沒有退出
- 13. 將子shared_pointer投射到父shared_pointer C++ 14
- 14. release()沒有聲明C++
- 15. cygwin python pip +模塊調用:退出沒有任何東西
- 16. 無法在Release中構建CocoaPods,但在調試時沒有問題
- 17. NSMutableDictionary在移除對象時沒有調用'release'
- 18. 用戶退出沒有任何異常
- 19. 我退出()腳本,但它不退出
- 20. 如何從助推庫中取出單個元素(例如shared_pointer)?
- 21. shell腳本沒有運行,但只是退出
- 22. Mercurial HG'pretxncommit.whitespace hook退出狀態1'但沒有指定鉤子
- 23. 有沒有boost :: weak_intrusive_pointer?
- 24. ReadAsync退出,沒能在調試
- 25. 帶boost :: asio的ThreadPool不退出?
- 26. boost asio io_service :: run()退出'早' - 或不?
- 27. 有沒有辦法退出Greasemonkey腳本?
- 28. UITableView有沒有退出編輯模式?
- 29. 使用boost filtered_graph沒有print_graph()
- 30. 調用沒有輸出
我使用的是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