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

MEM使用率超過負荷~~

尚未結案
jakie720313
一般會員


發表:15
回覆:7
積分:4
註冊:2003-11-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-07 21:37:32 IP:218.168.xxx.xxx 未訂閱
#define number 1300 TDateTime start1; int find_min(int *test) {     int i,j,temp;     test = new int[100];        for(i=0;i<99;i++) for(j=i+1;j<100;j++) { if(test[i]>test[j]) { temp=test[i]; test[i]=test[j]; test[j]=temp; } } return test[0]; } int i,m,block,second_block,sec_choose,choose,data_value,block; int different,block_sum; int *difference=new int[1300]; int *d=new int[33280000]; FILE *fptr; start1=Now(); Timer1->Enabled=true; fptr=fopen("C:\\data.txt","r"); for(i=0;i<33280000;i++) { if((fscanf(fptr,"%d",&data_value))!=EOF) d[i]=data_value; } int *data = new int[256]; int *temp=new int[256]; int *block_diff=new int[100]; int *block_minium=new int[100]; //下面是主要比對的方法 //可能因為迴圈太大了所以導致當機 for(choose=1;choose<=number;choose++) //從這裡開始 { for(sec_choose=1;sec_choose<=number;sec_choose++) { for(block=1;block<=100;block++) { for(i=(block-1)*256+25600*(choose-1);i<=(block*256)-1+25600*(choose-1);i++) temp[i-(256*(block-1)+25600*(choose-1))]=d[i]; for(second_block=1;second_block<=100;second_block++) { for(i=(second_block-1)*256+25600*(sec_choose-1);i<=(second_block*256)-1+25600*(sec_choose-1);i++) data[i-(256*(second_block-1)+25600*(sec_choose-1))]=d[i]; for(m=0;m<256;m++) { different+=abs(data[m]-temp[m]); } block_diff[second_block-1]=different; different=0; } block_minium[block-1]=find_min(block_diff); } block_sum=0; for(i=0;i<100;i++) { block_sum+=block_minium[i]; } difference[sec_choose-1]=block_sum; Label7->Caption=IntToStr(choose); Label11->Caption=IntToStr(sec_choose); Form1->CGauge1->Progress=sec_choose*100/number; Sleep(10); Application->ProcessMessages(); } } //到這裡 這個程式我跑到30張圖片比對800多次就當掉了,我看了一下windows工作管理員: 請問大大有沒有什麼方法可以解決這個問題呢????謝謝~~ 發表人 - jakie720313 於 2004/11/07 21:47:34
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-08 07:36:50 IP:218.160.xxx.xxx 未訂閱
你的find_min()有new沒有delete.程式的其他地方也是有new沒有delete. 發表人 - BROOK 於 2004/11/08 07:56:26
jakie720313
一般會員


發表:15
回覆:7
積分:4
註冊:2003-11-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-08 14:57:15 IP:218.168.xxx.xxx 未訂閱
我把副程式改成 int find_min(int *test) { int i,j,temp,minium; test = new int[100];    for(i=0;i<99;i ) for(j=i 1;j<100;j ) { if(test[i]>test[j]) { temp=test[i]; test[i]=test[j]; test[j]=temp; } } minium=test[0]; delete test; //多加入這一行 return minium; } 然後再去跑一次就沒有這樣的困擾了 原來是我忘記把它delete掉了...真是健忘~~~^^" 謝謝大大,感激不盡~~~
系統時間:2024-07-03 7:48:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!