2011-03-21 121 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