我有一個類A,我構造了一個名爲bb的B類對象。 在構造對象bb之後,我運行由異常處理程序捕獲的A類代碼中的異常。 現在我的問題是如何在異常處理程序中釋放對象B的內存?如何在C++中釋放內存
1
A
回答
1
使用shared_ptr
struct B {...};
struct A {
A() : bb(new B) {} // auto-deallocate
boost::shared_ptr<B> bb;
}
+0
使用'boost :: make_shared'而不是'new'更安全(在本例中可能不是這樣),使用更少的內存,而且速度更快。 – dalle 2010-10-30 07:22:29
0
如果B類對象是類A(聚合模式)的成員對象,那麼你甚至都不需要,只要爲B本身是RAII-ED明確地釋放它。另一方面,如果它是一個堆對象(A在堆上動態分配bb),則需要明確釋放它。您可以使用boost :: scoped_ptr或boost :: shared_ptr(取決於您是否希望將bb的本機與其他人共享)來保存對象bb的所有者,以便在刪除類A對象時自動釋放它。
相關問題
- 1. 如何在C中釋放內存?
- 2. 如何在objective-c中釋放內存?
- 3. Assert釋放內存在C++
- 4. 的Objective-C:如何釋放內存AvAudioPlayer
- 5. 在C和C++中如何分配和釋放* array *內存?
- 6. 在C++中釋放對象的內存
- 7. 在C++中釋放非動態內存
- 8. 在C++中分配和釋放內存
- 9. 如何在python中釋放內存?
- 10. 如何在Perl中釋放內存?
- 11. 如何在iphone中釋放內存?
- 12. 如何在PHP中釋放內存?
- 13. 如何在Perl中釋放內存?
- 14. 如何在Matrix Class中釋放內存?
- 15. 如何在android中釋放內存
- 16. 如何在Perl中釋放內存
- 17. 如何在python中釋放內存wx.MemoryDC
- 18. 如何釋放內存在Java中
- 19. 如何在.NET中釋放內存?
- 20. 如何在Java中釋放內存?
- 21. C++ dtor釋放_bstr_t內存
- 22. 內存釋放目標C
- 23. C++:關於釋放內存
- 24. 無法釋放內存C
- 25. 釋放內存 - Visual C
- 26. 困惑C++內存釋放
- 27. 如何釋放Canvas內存?
- 28. 如何釋放內存頁
- 29. PtrToStringChars,如何釋放內存?
- 30. 如何釋放內存?
「show code」always help ... – akira 2010-10-30 07:15:17
發佈一些代碼可能會有幫助。我不明白爲什麼你不能簡單地通過調用'delete'在異常處理程序中釋放對象B. – 2010-10-30 07:15:19
沒有代碼,沒有餅乾。 – sbi 2010-10-30 07:17:37