C++ builder的内存释放: [ 自己添加public成员, 构造函数中new ]
[解决办法]
关于 delete 与 delete []
如果不匹配,可能 codeguard 会错报的。如果不用 codeguard 之类的来做内存监测,那个对于 析放单个实例来说,一般应该没区别。不过,还是建议严格匹配,因为严格匹配总是正确的,我可不想我的代码引发其他异常。
[解决办法]
(1) 不需要...以動態建立窗口為例 :
TForm1 *Form1; // 主窗口
TForm2 *TestFormA; // 運行生命期與主窗口相依
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
// 以 VCL 機制...當主窗口 Destroy 時...TestFormA 連帶被釋放
TestFormA = new TForm2(this);
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TestFormA->ShowModal();
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
// 即用即收
TForm *TestFormB = new TForm2(this);
TestFormB->ShowModal();
delete TestFormB; // 此處一定要加 delete 來釋放 TestFormB
}