首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

new 出来的Form在OnClose中写了Action=caFree,真的可以释放吗? 如果可以那这种情况该如何解释呢

2012-04-13 
new 出来的Form在OnClose中写了ActioncaFree,真的可以释放吗? 如果可以那这种情况该怎么解释呢?void__fas

new 出来的Form在OnClose中写了Action=caFree,真的可以释放吗? 如果可以那这种情况该怎么解释呢?
void   __fastcall   TfrmMultPathSelect::FormClose(TObject   *Sender,
            TCloseAction   &Action)
{
        Action=caFree;

}


void   __fastcall   TfrmMultpathcollect::Image1DblClick(TObject   *Sender)
{
       
                frmMultPathSelect=new   TfrmMultPathSelect(Application);
                frmMultPathSelect-> ShowModal();//显示出窗体   frmMultPathSelect后   就关闭
                frmMultPathSelect-> Update();
                ShowMessage(frmMultPathSelect-> edtNewname-> Text);//但这时显示的还有值
         
        }

}

[解决办法]
new ----> delete
malloc ----> free

基础抓起...
[解决办法]
void __fastcall TfrmMultpathcollect::Image1DblClick(TObject *Sender)
{
frmMultPathSelect=new TfrmMultPathSelect(Application);
frmMultPathSelect-> ShowModal();//显示出窗体 frmMultPathSelect后 就关闭
frmMultPathSelect-> Update();
delete frmMultPathSelect; //如果改成这样的话 就不显示了
ShowMessage(frmMultPathSelect-> edtNewname-> Text);
}
你双击的时候才NEW出来的。想想它们之间的先后顺序。
[解决办法]
OnClose 加 Action = caFree 释放的是由Windws 系统控制的frmMulPathSelect所关联的窗口,OnClose以后,窗口不存在了,但frmMultPathSelect对象还存在,
加上delete frmMultPathSelect后,就把frmMultPathSelect对象也删除了!

热点排行