我有一個主要的對象。它擁有很多包含其他對象的數組。我想知道,當我刪除主對象時,所有的內存都會被釋放(主對象,數組和數組的對象(元素))?例如:當我刪除一個對象時,被刪除的對象是否也被刪除了?
Fruit^ my_fruit = gcnew Fruit;
Apple^ first_apple = gcnew Apple;
Apple^ second_apple = gcnew Apple;
my_fruit->AppleList->Add(first_apple);
my_fruit->AppleList->Add(second_apple);
// some operations
delete my_fruit; // **is it enough to avoid memory leak, is it necessary to delete first and second apple objects?**
謝謝,這是有益的..我真的需要了解內存管理。 – user983924 2012-02-07 08:27:27
這是不正確的。刪除不會釋放用gcnew創建的這些託管對象的內存。除非這些類實現IDisposable,否則不需要刪除調用。除非AppleList實現了IDisposable(即它具有析構函數),否則Fruit不需要析構函數。 – 2012-02-07 14:29:57
啊,是的,感到困惑。由於我們正在討論gcnew,它由垃圾收集器處理。另一方面,如果你使用新的代碼,你需要在內存中釋放代碼來防止內存泄漏。 – syclee 2012-02-07 23:31:32