`
ylilike
  • 浏览: 145881 次
  • 性别: Icon_minigender_1
  • 来自: 洛阳
社区版块
存档分类
最新评论

Delphi中destroy, free, freeAndNil, release用法和区别

阅读更多

经过这段时间对delphi中free 和 release 的仔细学习,先总结如下:
1。form.free直接释放资源后,调用OnDestroy事件,但是没有将form指针改为nil
2。form.release 等待资源不再使用后释放资源,同样不修改form指针为nil,所以在destroy中最好使用    release进行资源释放操作。
3。局部变量释放资源时,可以考虑用freeandnil()释放资源,这样效率会高些,能提高内存的利用率
4。 在对窗体操作时,单纯通过assigned(form1)判断窗体是否已经创建是不够的,因为如果窗体通过free   /release进行资源释放的话,form1指向的是一个未知地址,而非nil,所以需要用(not    Assigned(ShowForm)) and (not (ShowForm is  TForm2)) 来判断该窗体是否已经创建在内存中

分享到:
评论

相关推荐

    delphi动态 WebBrowser 释放问题.txt

    delphi动态 WebBrowser 释放问题.txt var web:TwebBrowser; procedure TForm1.Button1Click(Sender: TObject); begin web:=TWebBrowser.Create(Self); web.ParentWindow:=Self.Handle; web.SetBounds(100,100,...

    Delphi制作最小化到系统托盘的程序&TForm1.FormDestroy不执行的原因.zip_win10程序窗口最小化不见了

    Delphi制作最小化到系统托盘的程序&TForm1.FormDestroy不执行的原因.zip

    delphi动态 WebBrowser 释放问题.rar

    delphi动态 WebBrowser 释放问题 var web:TwebBrowser; procedure TForm1.Button1Click(Sender: TObject); begin web:=TWebBrowser.Create(Self); web.ParentWindow:=Self.Handle; web.SetBounds(100,100,100,...

    DELPHI动态创建删除FRAME---示例源码

    DELPHI动态创建删除FRAME unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,FM; type TForm2 = class(TForm) Panel1: ...

    delphi 7 gif控件

    delphi 7 gif控件 unit GIFImage; //////////////////////////////////////////////////////////////////////////////// // // // Project: GIF Graphics Object // // Module: gifimage // // Description: ...

    DELPHI执行DOS命令控件.rar

    执行DOS命令的DELPHI控件: property StdOutRead :THandle read fOutputRead; property StdInWrite :THandle read fInputWrite; property StdErrRead :THandle read fErrorRead; procedure ...

    android 加载fragment防止destroy

    之前写了一个activity加载fragment的比较low,那个是放在xml布局里面动态控制show和hide实现的,这个代码也是通过show和hide实现显示和隐藏防止destroy,但是可以动态加载fragment实例,不用再把fragment放在xml布局...

    destroy

    一个桌面发泄工具,很好玩。就是砸桌面的

    如何检测Unity3D中的Gameobject的destroy事件来触发其他操作?2

    Posted on 2013年02月26日 by U3d / Unity3D脚本/插件/被围观 269 次 假如Unity3D中游戏的魔法有一个持续时间效果,例

    Delphi AMF

    Delphi的AMF格式代码。 TAMF3Stream = class(TAMFBaseStream) private type TAMFCache<T> = class private FIndex: Integer; FCache: TDictionary, Integer>; function GetIndex(const Obj: T): Integer; ...

    Spybot - Search and Destroy v1.5.2.19 RC 多国语言版

    SpyBot-Search & Destroy 是专门用来清理间谍程序的工具。一些间谍程序随着共享软件安装到您的电脑中,监视您的电脑运行。到目前为止,他已经可以检测一万多种间谍程序 (Spyware),并对其中的一千多种进行免疫处理...

    Delphi 快捷键控件

    THotKeySpy 控件说明: 基本功能: 侦测键盘事件,无论应用... 这个演示程序给出了HotKeySpy的基本用法. 包含文件: HotKeySpy.dcr HotKeySpy.pas DemoUnit.pas DemoUnit.dfm Demo.dpr Demo.exe Readme.txt

    Delphi 关键字详解

    //Abstract关键字必须与Virtual或Dynamic关键字同时使用, 因为抽象方法必须被覆盖式实现. //抽象类不能实例化, 抽象方法不能包含方法体. type TDemo = class private protected procedure X; virtual; abstract;...

    Delphi最新三层源码

    随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的太多了,不喜欢举例子。 大多数文章中都或多或少的讲到了三层架构。表示层,业务层,数据层。又把业务层再细分,分为外观服务层,...

    操作INI文件配置应用程序,Delphi源代码.rar

    Delphi操作INI文件配置应用程序,一般用作程序的配置文件,首次运行后可生成一个INI文件,以方便程序调用。 begin // 获取当前程序所在路径 FileName := ‘c:myini.ini‘; // 创建myinifile对象,并创建或打开myini....

    发布一个基于BER编码的CDR文件高速解码程序——destroy for linux

    使用方法:键入./destroy –h可以获得所有帮助信息 $./destroy -h ./destroy 1.0.0 (2010-06-28) This is a program decoding a BER encoded CDR file Author: Roy Liang Blog: http://blog.csdn.net/yui/ Usage: ./...

    发布一个基于BER编码的CDR文件高速解码程序——destroy for solaris

    使用方法:键入./destroy –h可以获得所有帮助信息 $./destroy -h ./destroy 1.0.0 (2010-06-28) This is a program decoding a BER encoded CDR file Author: Roy Liang Blog: http://blog.csdn.net/yui/ Usage: ./...

    发布一个基于BER编码的CDR文件高速解码程序——destroy for tru64

    使用方法:键入./destroy –h可以获得所有帮助信息 $./destroy -h ./destroy 1.0.0 (2010-06-28) This is a program decoding a BER encoded CDR file Author: Roy Liang Blog: http://blog.csdn.net/yui/ Usage: ./...

    Delphi操作Excel类

    使用方便,功能强大。 type FileCheckResult = (fcrNotExistend,fcrNotXSLFile,fcrValidXSL); //文件不存在,不是XSL文件,合法的XSL文件 TOLEExcel = class(TComponent) private FExcelCreated: Boolean; ...

Global site tag (gtag.js) - Google Analytics