在析构函数里释放内存报错
本人开发了一个控件,控件里有个成员变量TImage *ForeLayer;
在构造函数是为此变量分配内存ForeLayer = new TImage(NULL);
在析构函数里释放内存:
if (ForeLayer != NULL)
ForeLayer->Free();
将此控件拖到Form上运行时一切正常,当关闭程序时,报内存错误,就是因为析构函数里释放内存时产生的,这是为什么?
[解决办法]
充 :
TImage TObject 所承衍生下的 VCL 元件...如果在建(new)入有者(Owner)...(Owner)也被放...所以 delete 也就可以免了! 看似反了 C++ 物件向原...此 C++ Builder 因 Delphi 兼容......
例 :
ForeLayer = new TImage(this); //建入有者(Owner)
[解决办法]
owner的自动析构是在析构函数之后才执行的。
TForm 析构过程:
VCL析构事件->C++析构函数(子类析构)->析构挂在Owner上的部件(父类析构)->析构栈