MEM使用率超過負荷~~ |
尚未結案
|
jakie720313
一般會員 發表:15 回覆:7 積分:4 註冊:2003-11-23 發送簡訊給我 |
#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 發送簡訊給我 |
|
jakie720313
一般會員 發表:15 回覆:7 積分:4 註冊:2003-11-23 發送簡訊給我 |
我把副程式改成
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掉了...真是健忘~~~^^"
謝謝大大,感激不盡~~~
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |