从TForm派生的单个类似乎会一直持有GDI句柄,直到应用程序关闭。
class TTestForm : public TForm {
public:
TTestForm(TComponent*);
};
std::auto_ptr<TTestForm> test(new TTestForm(NULL));
test->ShowModal();我是VCL的新手,所以请耐心听我说。此测试是使用不包含控件的窗体完成的。据我所知,如果没有指定所有者,所有对象都归应用程序所有。
我的应用程序动态地创建(和销毁)许多表单。每次显示表单时,都会分配3-4个新的GDI句柄。有没有办法在应用程序生命周期内显式释放这些GDI句柄?
发布于 2010-07-16 13:31:56
事实证明,泄漏是由错误设置的TImageList.ShareImages属性引起的。
发布于 2010-07-13 04:39:51
注意:我是一名Delphi程序员,不是C++,但VCL基本上就是VCL。您可以尝试表单的Release()方法,而不是free()。或者,在OnClose事件中设置传递给caFree的操作参数-这应该告诉VCL在窗体关闭时释放窗口资源,而不是隐藏它。
我想另一个问题是--你需要继续创建/销毁表单吗?你能创建它们一次,然后重用它们吗?
https://stackoverflow.com/questions/3105940
复制相似问题