Memory management 释放内存的问题

Memory management 释放内存的问题,memory-management,managed-c++,Memory Management,Managed C++,我有一个包含以下字段的表单: List<String^> ^images; PictureBox ^box;. List<PictureBox^> ^boxes; String ^path; List^图像; PictureBox^box;。 列表框; 字符串^路径; (以及一些INT) 我使用gcnew为每个表单分配内存,但是当我关闭表单时,内存不会被释放。我以为他们会被垃圾

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

    List<String^>       ^images;
    PictureBox          ^box;.
    List<PictureBox^>   ^boxes;
    String              ^path;
List^图像;
PictureBox^box;。
列表框;
字符串^路径;
(以及一些INT)

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

我还注意到一个自动生成的
组件
变量类型为
Container^
,它是析构函数中的
delete
d。怎么回事


编辑:哎呀,忘了一件相当重要的事情:在我调用上述表单的主表单中,我有一个这些表单的列表(用于与它们通信)。一旦表单关闭,我应该如何从列表中删除它?

垃圾收集是不确定的;你无法预测它何时运行。所保证的是它将“在需要时”运行;如果您确实需要控制它发生的时间,那么您可以调用:

GC.Collect();


@马库斯:也许还有另外一个对你的表单的引用——你会在上面调用
Dispose
GC.WaitForPendingFinalizers();