熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi程序使用資源的釋放

2013-11-23 17:47:30  來源: Delphi編程 
 寫出一個不會造成資源分配崩潰的Delphi應用程序的關鍵是確保如果程序中分配了資源即使當故障發生程序也應能釋放占用的資源

  文件內存WINDOWS資源和對象是一些必須時時加以注意的需確保釋放的資源下面的事件控制代碼例子中先分配了內存然後產生了一個錯誤而造成它不再執行釋放內存的程序代碼

  ProcedureTForm.ButtonlClick(SenderTobject)

  Var

  PointerPointer

  IntegerNumzeroIntger

  begin

  NumzeroΚ

  GetMem(Pointer{分配K的內存資源}


  IntegerΚdivNumzero{此句產生一個除法錯誤}

  FreeMem(Pointer{這裡此句將不被執行}

  end

  盡管大多數錯誤不會這樣明顯但上例包含了重要的一點當錯誤產生後程序執行跳出模塊其後的資源釋放程序代碼不再被執行為了確保上例中的FreeMem能夠釋放被GetMem占用的內存資源必須把代碼放入一個資源保護模塊

  這裡給出一個曲型的資源保護模塊的格式

  {資源的分配}

  try

  {資源的使用}

  finally

  {資源的釋放}

  end

  上面的try...finally模塊可以使程序總能執行finally部分中的任何程序代碼即使有錯誤在保護模塊中產生當try部分中的某一條代碼執行引起錯誤時執行將直接跳到finally部分若執行中沒有錯誤產生則程序按正常順序執行

  在下面的事件控制代碼例子中先分配了內存然後產生了一個錯誤但是仍然執行了釋放內存的程序代碼

  ProcedureTForm.ButtonClick(SenderTobject)

  Var

  PointerPointer

  IntegerNumzeroInteger

  begin

  NumzeroΚ

  GetMem(Pointer{分配K的內存資源}


  try

  IntegerΚdivNumzero{此句產生一個除法錯誤}

  finally

  FreeMem(Pointer{這裡此句仍將被執行}

  end

  end

  如何保障程序對所用資源的釋放在程序編制中是一個非常重要的問題必須在程序編制中加以實踐和注意


From:http://tw.wingwit.com/Article/program/Delphi/201311/25084.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.