線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1269
推到 Plurk!
推到 Facebook!

malloc後程式出現不明的錯誤

尚未結案
klsdf
一般會員


發表:1
回覆:1
積分:0
註冊:2010-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-07-30 23:30:25 IP:114.33.xxx.xxx 訂閱
主程式碼其中一部份

[code cpp]
int i,j;
loadsign=loaddialog->Execute();
if(loadsign)//開啟讀檔對話框成功
{
N4->Enabled=false;
N5->Enabled=true;
N6->Enabled=true;
N8->Enabled=true;

infile=fopen(loaddialog->FileName.c_str(),"r");

system_msg->Lines->Add("係數檔開啟成功。\n");
system_msg->Lines->Add("開始讀取" loaddialog->FileName ".............\n");

fscanf(infile,"%6s%d",nonread,&items);
fscanf(infile,"%6s%d",nonread,&arraywidth);

//定義基本型態共同項空間
commonptr=(commonstruct **)malloc(4*sizeof(commonstruct *));
commonbackup=(commonstruct **)malloc(4*sizeof(commonstruct *));

for(i=0;i<4;i )
{
commonptr[i]=(commonstruct *)malloc((arraywidth 1)*sizeof(commonstruct));
commonbackup[1]=(commonstruct *)malloc((arraywidth 1)*sizeof(commonstruct));
}

for(i=0;i<4;i )
{
for(j=0;j<=arraywidth;j )
{
commonptr[i][j].addressarray=(char **)malloc((arraywidth-j 1)*items*sizeof(char *));
commonptr[i][j].addressoffsetarray=(int *)malloc((arraywidth-j 1)*items*sizeof(int));
//commonbackup[i][j].addressarray=(char **)malloc((arraywidth-j 1)*items*sizeof(char *));
//commonbackup[i][j].addressoffsetarray=(int *)malloc((arraywidth-j 1)*items*sizeof(int));
}
}

//定義itemsaddress origin,itemsbackup,relaitems空間
itemsaddress=(char **)malloc(items*sizeof(char *));
originbackup=(char **)malloc(items*sizeof(char *));
itemsbackup=(char **)malloc(items*sizeof(char *));

for(i=0;i {
originbackup[i]=(char *)malloc((arraywidth 1)*sizeof(char));
itemsbackup[i]=(char *)malloc((arraywidth 1)*sizeof(char));
itemsaddress[i]=(char *)malloc((arraywidth 1)*sizeof(char));
}

for(i=0;i fscanf(infile,"%4s%s",nonread,itemsaddress[i]);//把係數載入


coeff_msg->Lines->LoadFromFile(loaddialog->FileName);//顯示出係數檔內容

system_msg->Lines->Add("讀取係數檔完畢......");
system_msg->Lines->Add("");
system_msg->Lines->Add("讀取製程參數......");
system_msg->Lines->Add("面積參數:");
system_msg->Lines->Add("加法器=" FloatToStr(adder_area) "(nm)");
system_msg->Lines->Add("減法器=" FloatToStr(suber_area) "(nm)");
system_msg->Lines->Add("暫存器=" FloatToStr(reg_area) "(nm)");
system_msg->Lines->Add("延遲參數:\n");
system_msg->Lines->Add("加法器=" FloatToStr(adder_delay) "(ns)");
system_msg->Lines->Add("減法器=" FloatToStr(suber_delay) "(ns)");
system_msg->Lines->Add("暫存器=" FloatToStr(reg_delay) "(ns)");
system_msg->Lines->Add("");

for(i=3;i<=arraywidth;i )
{
simple_form->h_max->Items->Add(IntToStr(i));
simple_form->h_min->Items->Add(IntToStr(i));
simple_form->deswidth->Items->Add(IntToStr(i));
}
for(i=3;i<=items;i )
{
simple_form->v_max->Items->Add(IntToStr(i));
simple_form->v_min->Items->Add(IntToStr(i));
}
for(i=3;i<=arraywidth;i )
simple_form->deswidth->Items->Add(IntToStr(i));

searchcommon(commonptr,itemsaddress,items,arraywidth,0);
fclose(infile);
}
else//開啟失敗
system_msg->Lines->Add("係數檔開啟失敗或未開啟。\n");

[/code]

只要malloc commonbackup的addressarray跟addressoffsetarray
程式執行就會出錯

我BCB6已經更新到SP4了
爬文爬了很久 原本以為是更新的問題 但是已更新也沒用
附上主程式 肯請解答 是否我的寫法有問題


s92405054
高階會員


發表:7
回覆:49
積分:101
註冊:2009-04-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-08-18 10:51:41 IP:220.128.xxx.xxx 訂閱
malloc()完不是要配free()嗎?
感覺好像沒看到有free()......(漏看的話請見諒= =)
klsdf
一般會員


發表:1
回覆:1
積分:0
註冊:2010-07-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-08-19 08:29:46 IP:114.33.xxx.xxx 訂閱
有 下面有一個bottom按了會free 我只有po運行的部份
zhgwbzhd
一般會員


發表:10
回覆:32
積分:18
註冊:2008-07-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-09-20 19:20:10 IP:114.245.xxx.xxx 未訂閱
換做 new 試試呢??

bcb的幫助中有這樣的說明。

Description
The new operators offer dynamic storage allocation, similar but superior to the standard library function malloc.
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-09-21 00:28:20 IP:220.135.xxx.xxx 訂閱
請注意下面你打的程式碼

commonbackup[1]=(commonstruct *)malloc((arraywidth 1)*sizeof(commonstruct));

應該是 i 吧!
------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2017-10-21 16:16:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!