請問有關如何釋放記憶體 |
尚未結案
|
rockhaword
一般會員 發表:3 回覆:5 積分:1 註冊:2011-05-30 發送簡訊給我 |
最近在寫一個程式需要大量讀取網頁
因為在讀了幾百個網頁後會有記憶體不足的情況 所以必須想辦法釋放記憶體... 查了一下資料 有delete和free兩個方法 delete對應new, free對應malloc 但問題在於我的程式裡沒有用new或是malloc宣告指標變數 但是讀了幾百次網頁後會有記憶體不足的情況 以下是我嘗試去debug測試用的小程式 加入一個WebCppBrowser和兩個Button 首先全域變數為... IHTMLDocument2 *document; wchar_t *title, *cookie, *body_buffer, *URLink; 開啟網頁後 (CppWebBrowser1->Navigate(URL)) 按下第一個Button Button內容為... (void *)document = CppWebBrowser1->Document; for (g=0;g<500; g ){ document->get_title(&title); g_ws = WideString(title); g_as = g_ws; Edit2->Text = g_as; document->get_cookie(&cookie); g_as = WideString(cookie); Edit3->Text = g_as; document->get_URL(&URLink); g_as = WideString(URLink); Edit1->Text = g_as; document->get_body(&body); body->get_outerHTML(&body_buffer); Memo2->Lines->Clear(); Memo2->Text = WideString(body_buffer); Application->ProcessMessages(); }
////第一個button即讀取五百次的tile, cookie, URLink...等 按下數次第一個button後 會發現越來越多記憶體被吃掉 第二個Button為釋放記憶體 第二個button內容為... title = 0x0; cookie = 0x0; URLink = 0x0; body = 0x0; body_buffer=0x0; delete title; delete cookie; delete URLink; delete body; delete body_buffer; /////以上測試失敗 按下後記憶體仍然沒有被釋放 請問如何釋放這幾個wchar_t變數所佔用的記憶體空間? |
rick060
高階會員 發表:2 回覆:112 積分:217 註冊:2009-11-17 發送簡訊給我 |
|
a3680p
一般會員 發表:0 回覆:1 積分:0 註冊:2011-06-26 發送簡訊給我 |
同學!
我bcb功力很淺,連DLL程式也寫不出來,但常用bcb,我還在用bcb6! 我也發現ㄧ個程式用久,常會有“記憶体”疲乏! 我bcb功力又不够,所以想到ㄧ個方法可解決“記憶体”疲乏的當機! 首先開個目錄,然後用bcb寫兩個相同程式,我將程式定名1.exe和2.exe. 但桌面偼徑用1.exe檔開啓,例如我寫個CppWebBrowser Button程式, 當開啓1.exe檔偼徑程式,1.exe用timer自動執行CppWebBrowser動作,當要執行下個程序時, 按Button執行Close();闗掉1.exe,再自動開啓2.exe檔,當然2.exe結束時㑹自動開啓1.exe檔, 如此交替雖很笨,但可解決“記憶体”疲乏的當機,當然交替檔案時中間放個“缓衝檔案”,那更完美! 看起來很笨但實用! 缓衝檔案主要程序是timer,用以缓衝兩檔交替時使用,例如寫comport檔,當[Close()1.exe]時,先去執行缓衝檔案,再開啓2.exe檔,較不充突,當然缓衝檔案要設定自動Close(); 希望對你有幚助,當然我也是delphi.top的受惠著,大家交流ㄧ下,3Q!Bye!
------
sun |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |