全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:662
推到 Plurk!
推到 Facebook!

Memory Release

尚未結案
newbie
初階會員


發表:81
回覆:45
積分:25
註冊:2002-11-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-25 17:38:48 IP:203.69.xxx.xxx 未訂閱
請問大家喔,    我寫了一個 MDI 程式  然後裡有一堆 MDIChild Form. 然後我在 MDIChild Form 裡面動態產生很多物件 結果用 task manager 一看 memory cost 大增    但是我發現一個現象, 比如原本 memory 佔 20 MB, new 完這些物件後變成 30 MB    之後沒有作任何動作又直接 delete 掉這些 instance... 結果 用 task manager 看 memory cost 併不是 20 MB    之後我將整個 MDI 縮小, 然後再 恢復為 Normal Window mode.    當然, 在縮小處理時, 很多 UI 處理的 resource cost 不用了. 所以 memory cost 變少,    我想問的是... 用 delete 是不是不能把該 new instance 所佔的 memory 清乾淨??    如果是?> 有任何 API 或方式可以做這件事嗎?    謝謝~ 
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-26 21:03:14 IP:211.76.xxx.xxx 未訂閱
基本上,這是由系統處理的,而我們在寫程式時,只要確保有 new 的,都會有對應的 delete 不要有只 new 不 delete 的浪費記憶體,這樣就行了。 你可以作一個空表單,只放一個按鈕,程式如下:    
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int *test;
  test=new int[100000000];      for(int i=0;i<100000000;i =4000)
    test[i]=0;  // BCB 要給 new 出來的東西資料才會真的去 alloc 記憶體      delete [] test;
}
以上程式只是動態要求記憶體,再釋回,您可以打開 task manager,看看按第一次按鈕前後"記憶體使用量"及"尖峰記憶體使用量"(如果沒有此欄位,請自行由「檢視」選單中加選),之後,再按第二次、第三次... 看看有何不同。 結果是,第一次按下後 "記憶體使用量"及"尖峰記憶體使用量" 都會增加,而第二次、第三次後,幾乎是不變,當然,如果您有對表單拖曳,最小化最大化等等,都會使記憶體使用量改變,而同樣地,會占用多少記憶體,由 Windows 系統自行調配。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
系統時間:2024-05-18 20:27:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!