释放内存的问题

时间:2011-03-21 22:54:47

标签: memory-management managed-c++

我有一个包含以下字段的表单:

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

(以及一些注明)。

我使用gcnew为每个内容分配内存,但是当我关闭表单时,内存不会被释放。我以为他们会被垃圾收集;他们为什么不呢?

我还注意到了析构函数中components d类型的Container ^自动生成delete变量。怎么了?

编辑:哎呀,忘了一件相当重要的事情:在我称之为上述表格的主要表格中,我有一份这些表格的清单(与他们沟通)。一旦关闭,我该如何从列表中删除该表单?

1 个答案:

答案 0 :(得分:1)

垃圾收集是不确定的;你无法预测它何时会运行。所有这一切都得到保证,它将“在需要时”运行;如果完全需要控制它何时发生,那么你可以调用:

GC.Collect();

GC.WaitForPendingFinalizers();