a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Delphi > 正文

Delphi程序使用資源的釋放

2019-11-18 18:57:36
字體:
來源:轉載
供稿:網友
寫出一個不會造成資源分配崩潰的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;

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

上一篇:Delphi編程技巧十則

下一篇:Delphi制作帶圖標的彈出式選單

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 中文幕av一区二区三区佐山爱 | 91久久艹 | 免费观看黄a一级视频 | 亚洲精品1| 91不卡| 999国产在线 | 久久99精品久久久久国产越南 | 超碰在线97观看 | 国产美女自拍视频 | 日本一区二区视频 | 毛片特级| 国产精品极品美女在线观看免费 | av黄在线观看| 久久成人在线视频 | 三级av在线 | 天天夜夜操 | 精品美女在线 | 91视频网址| 国产精品日韩欧美 | 国产一区精品视频 | 又爽又大又黄a级毛片在线视频 | 国产成人影院 | 欧洲成人在线观看 | 成人免费视频在线观看 | av电影院在线观看 | 狠狠干网站 | 欧美精品一区在线发布 | 国产不卡一二三区 | 日韩一区二区三区在线 | 亚洲激情一区二区 | 视频在线一区 | 丝袜+亚洲+另类+欧美+变态 | 久久视频一区 | 午夜国产一级片 | 欧美成人一区二区三区片免费 | 欧美 日韩 国产 一区 | 欧美一二三区在线 | 欧美成人高清 | 人操人人人 | 欧美成人一区二区三区片免费 | 99pao成人国产永久免费视频 |