程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi程序使用資源的釋放

Delphi程序使用資源的釋放

編輯:Delphi
寫出一個不會造成資源分配崩潰的Delphi應用程序的
  關鍵是確保如果程序中分配了資源,即使當故障發生,程
  序也應能釋放占用的資源。
  
  文件、內存、Windows資源和對象是一些必須時時加
  以注意的需確保釋放的資源。下面的事件控制代碼例子中
  先分配了內存,然後產生了一個錯誤,而造成它不再執行
  釋放內存的程序代碼:
  
  ProcedureTForm1.ButtonlClick(Sender:Tobject
  );
  
  Var
  
  Pointer1:Pointer;
  
  Integer1,Numzero:Intger;
  
  begin
  
  Numzero:Κ0;
  
  GetMem(Pointer1,1024);{分配1K的內存資源}
  
  
  Integer1:Κ5divNumzero;{此句產生一個除法錯
  誤}
  
  FreeMem(Pointer1,1024);{這裡此句將不被執
  行}end;
  
  盡管大多數錯誤不會這樣明顯,但上例包含了重要的
  一點:當錯誤產生後,程序執行跳出模塊,其後的資源釋
  放程序代碼不再被執行。為了確保上例中的FreeMem能夠
  釋放被GetMem占用的內存資源,必須把代碼放入一個資源
  保護模塊。
  
  這裡給出一個曲型的資源保護模塊的格式:
  
  {資源的分配}
  
  try
  
  {資源的使用}
  
  finally
  
  {資源的釋放}
  
  end;
  
  上面的try...finally模塊可以使程序總能執行fi
  ??nally部分中的任何程序代碼,即使有錯誤在保護模塊
  中產生。當try部分中的某一條代碼執行時引起錯誤時,執
  行將直接跳到finally部分;若執行中沒有錯誤產生,則
  程序按正常順序執行。
  
  在下面的事件控制代碼例子中先分配了內存,然後產
  生了一個錯誤,但是仍然執行了釋放內存的程序代碼:
  
  ProcedureTForm1.Button1Click(Sender:Tobject
  );
  
  Var
  
  Pointer1:Pointer;
  
  Integer1,Numzero:Integer;
  
  begin
  
  Numzero:Κ0;
  
  GetMem(Pointer1,1024);{分配1K的內存資源}
  
  
  try
  
  Integer1:Κ5divNumzero;{此句產生一個除法錯
  誤}
  
  finally
  
  FreeMem(Pointer1,1024);{這裡此句仍將被執
  行}
  
  end;
  
  end;
  
  如何保障程序對所用資源的釋放,在程序編制中是一
  個非常重要的問題,必須在程序編制中加以實踐和注意。
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved