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();