在析构函数里释放内存报错
本人开发了一个控件,控件里有个成员变量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)