天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

destroy, free, freeAndNil, release用法和區別

  最近在集成ZJ的模塊的時候,發現當窗體關閉的時候,頻繁的彈出內存訪問錯誤,實在是煩躁啊,看了下代碼,雖然很慘,但也沒發現創建對象需要釋放的問題,最后看到窗體關閉的時候,執行了一大段代碼,考慮可能是窗體關閉的時候,其中的事件沒有執行完成。考慮到這點,在Close事件中加入了Release方法,調試,問題解決。順便查了下destroy, free, freeAndNil, release用法和區別,如下:

===以下方法源自網絡===

  1)destroy:虛方法
  釋放內存,在Tobject中聲明為virtual,通常是在其子類中override 它,且要加上inherited關鍵字,才能保證派生類對象正確地被銷毀;
  但destroy一般不能直接用,為什么?
  假如當一個對象為nil,我們仍然調用destroy,此時會產生錯誤。因為destroy是虛方法,它要根據對象中的頭四個字節找到虛擬方法表Vmt的入口地址,從而找到destroy的入口地址,所以此時對象一定要存在。但free就是靜態方法,它只需根據對象引用/指針的類型來確定,即使對象本身不存在也沒問題,而且在free中有判斷對象是否存在的操作,所以用free比用destroy安全。


  2)free:靜態方法
  測試對象是否為nil, 非nil則調用destroy。下面是free的Delphi代碼:
  procedure TObject.Free;
  begin
  if Self <> nil then
  Destroy;
  end;
  一靜一動,取長補短,豈不妙哉!
  但是調用對象的Destroy只是把對象銷毀了,但并沒有把對象的引用設為nil,這需要程序員來完成,不過自從Delphi5之后,在sysUtils單元中提供了一個freeAndNil。


  3)freeAndNil;一般方法,非對象方法,非類方法。
  procedure FreeAndNil(var Obj);
  var
  Temp: TObject;
  begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
  end;
  建議大家用它代替free/Destroy,以便確保正確地釋放對象。

 

  4)release;TcustomForm中定義的靜態方法。  
  當窗口中所有的事件處理完之后,才調用free函數。常用在銷毀窗口,而在這個窗口中事件處理需要一定的時間的時候,用這個方法能確保窗口事件處理完之后才銷毀窗口。下面是TCustomForm.Release的Delphi源代碼:
  procedure TCustomForm.Release;
  begin
  PostMessage(Handle, CM_RELEASE, 0, 0);
  //向窗口發CM_RELEASE消息到消息隊列,當所有的窗口事件消息處理完之后,
  //再調用CM_RELEASE消息處理過程CMRelease
  end;
  再看看下面CM_RELEASE消息處理過程CMRelease的定義:
  procedure CMRelease(var Message: TMessage); message CM_RELEASE;
  procedure TCustomForm.CMRelease;
  begin
  Free; //最后還是free;
  end;

it知識庫destroy, free, freeAndNil, release用法和區別,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 善良的小峓子2在钱免费中文字 | 伊人第一路线 | 亚洲天码中字 | 无码AV精品久久一区二区免费 | 麻豆天美国产一区在线播放 | 精品无码久久久久久久久 | 伊人久久大香线蕉观看 | 男人团apk| 午夜天堂AV久久久噜噜噜 | 国产99r视频精品免费观看 | 国产午夜一区二区三区免费视频 | 亚洲精品无码不卡 | 老湿影院色情a | 99久久免热在线观看6 | 国偷自产AV一区二区三区健身房 | wankz tv videos国产 | 99国产精品人妻无码免费 | 一个人免费观看完整视频日本 | 青青热久久综合网伊人 | 国产精品免费一区二区三区视频 | 亚洲一卡二卡三卡四卡无卡麻豆 | 一区二区视频在线观看高清视频在线 | 成人国内精品久久久久影 | yellow在线观看免费高清的日本 | 狠狠色综合久久丁香婷婷 | 伊人精品久久久大香线蕉99 | 国产亚洲精品久久久久久鸭绿欲 | 午夜视频在线观看国产 | 国产偷抇久久精品A片蜜臀A | 久久中文字幕综合不卡一二区 | 成人在线观看视频免费 | 亚洲欧美视频在线 | 又黄又猛又爽大片免费 | 天天影视色欲 影视 | 人妻插B视频一区二区三区 人妻 中文无码 中出 | max girls 大感谢祭 | 国产超碰精久久久久久无码AV | 国产亚洲精品网站在线视频 | 国产午夜精品理论片免费观看 | 久久久91精品国产一区二区 | 午夜福利92看看电影80 |