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

内存资源泄漏的问题

尚未結案
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-04 09:55:54 IP:211.162.xxx.xxx 未訂閱
大大们好啊!小弟我又有问题了,劳您们废心了< > 经常在程式中遇见内存资源泄漏,但是不知道如何去判断(连用什么工具检查都不知道< >),只能凭感觉。我只知道可以用Win2000/XP自带的任务管理器去看. 下面是我的测试例子,希望大大们看了以后能给我点拨一下 "开始"->"运行"-> class="code"> set PATH = C:\Program Files\Borland\CBuilder5\Bin set INCLUDE = C:\Program Files\Borland\CBuilder5\Include set LIB = C:\Program Files\Borland\CBuilder5\Lib 然后是用做测试的test.cpp代码:
#include "iostream.h"
#include "windows.h"    void main(void)
{
        char *lp;
        lp = new char[3000];                       //声明一个指针数组,并分配内存
        cout<<"Memory has been assigned"<
然后在控制台中输入: c:\>bcc32.exe test.cpp。就得到test.exe了.
这段代码有一个比较严重的错误,就是申请的内存在释放前,程式已经被强制结束了,这样会造成内存资源泄漏,我的问题是如果我不知道源代码,我该怎样判断是否有资源的泄漏?如果我知道了源代码,我又该怎样去做检查?如果程式出了问题,怎么知道是资源泄漏而不是别的其它问题呢?
麻烦大大您们了,由于我的问题比较弱智,请不要笑哦       人生在勤,不索何获?
        
------
人生在勤,不索何获?
dllee
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-04 13:03:38 IP:61.231.xxx.xxx 未訂閱
如果沒有原代碼(原始碼),那就只有用工作管理員囉,如下圖: 把內存(記憶體)相關的欄位打開,並且加 GDI、USER物件、執行緒等都打開,接著去執行要測試的程式,如果執行的過程內存占用量變大,並且在操作完後,例如:搜尋、代換、排序、處理某個演算法、或某個流程,發現占用的內存還是一樣大,並沒有因為操作完而減少,此時,通常表示此操作的過程有占用內存不釋放的情況。 如果像您的 test 測試程式,系統在會關閉它的同時,將它所占用的內存清空,所以,不會有內存占用或愈來愈少的情況,您可以試著連續多次執行您的 test.exe 再由工作管理員查看就可能了解。 會發生占用內存不放是一個程式必需長時間執行,而在執行的過程如果有占用不放的情況,那內存就會愈來愈少!此時,將這個程式關閉,系統就會自動將它占用不放的內存釋放(至少 NT/2K/XP 的系統是這樣的)。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
系統時間:2024-05-03 20:35:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!