2011-03-21 158 views
0

問題我有以下字段的格式:與釋放內存

List<String^>  ^images; 
    PictureBox   ^box;. 
    List<PictureBox^> ^boxes; 
    String    ^path; 

(以及一些整數)。

我爲gcnew分配了其中每一個的內存,但是當我關閉表單時,內存沒有被釋放。我以爲他們會收集垃圾;他們爲什麼不是?

我還注意到在析構函數中自動生成的components變量Container ^delete d。那是怎麼回事?

編輯:哎呀,忘了一件相當重要的事情:在我稱之爲上述表格的主窗體中,我有一個這些窗體的列表(與它們進行通信)。一旦關閉,我應該如何從列表中刪除表單?

回答

1

垃圾收集不確定;你無法預測它何時會運行。所有的保證是它會在「需要時」運行;如果你絕對需要控制,當它發生,那麼你可以撥打:

GC.Collect(); 

GC.WaitForPendingFinalizers(); 
+0

這似乎並不爲我工作。 – 2011-03-21 23:19:31

+0

@Markus:或許還有另一個引用你的表格的地方 - 你叫它Dispose嗎? – Mehrdad 2011-03-21 23:24:25