注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

Delphi XE4 对象自动释放的问题  

2013-09-07 11:32:06|  分类: delphi xe5 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
建立一个Windows测试应用,测试一个对象是否在win平台自动释放:

  TmyClass=class
    public
      destructor Destroy; override;
      procedure show;
  end;

destructor TmyClass.Destroy;
begin
  ShowMessage('my class Destroy.');
  inherited;
end;

procedure TmyClass.show;
begin
  showmessage('my class create.');
end;

在Form中使用这个对象:

procedure TForm1.Button8Click(Sender: TObject);
var
  m:tmyclass;
begin
  m:=tmyclass.Create;
  m.show;
  //m.Free;
end;
注意,如果注释掉m.Free,则对象不会自动释放,点击按钮,不会显示my class Destroy,退出程序时也不显示。
在项目文件中加入:
  System.ReportMemoryLeaksOnShutdown:=true;
看看不释放对象,是否有内存泄漏,退出时真的泄漏了!



难道说,还要判断平台再决定是否Free对象。晕!

后记:与朋友请教,原来是这样的:windows平台的编译器还是原来旧的编译器,是不支持对象自动释放的,对于ios及android的编译器才支持,同时也支持手工Free对象。如此的话:对于同时跨win,ios及android的代码,还是要用Free来释放对象,而对于只跨ios及android的代码则不用了。
  评论这张
 
阅读(353)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017