Memory Release |
尚未結案
|
newbie
初階會員 ![]() ![]() 發表:81 回覆:45 積分:25 註冊:2002-11-28 發送簡訊給我 |
請問大家喔, 我寫了一個 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 發送簡訊給我 |
基本上,這是由系統處理的,而我們在寫程式時,只要確保有 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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |