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

動態矩陣

答題得分者是:jow
gyfatty
一般會員


發表:6
回覆:13
積分:8
註冊:2006-10-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-03 13:06:08 IP:140.124.xxx.xxx 訂閱
今宣告一動態矩陣,
執行檔可以執行,
但會產生錯誤:


主要code如下:
[code c#]
float *pr = new float [256];
中間不贅述

delete pr;
[/code]

是否使用動態須要注意哪些?
因為小弟只拿上述兩行在執行上是沒有問題

ChungLin.Net
中階會員


發表:2
回覆:33
積分:52
註冊:2006-07-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-03 13:47:41 IP:59.120.xxx.xxx 訂閱
看了一下您的程式碼…
問題應該在於

[code cpp]
float *pr = new float [256];

.............略........
for(int i=0;i pr[i 1] =(pr[i]);

for(int i=0;i pr[i]=pr[i]*255;

[/code]

原因是您的 pr 陣列大小為 256,可是您的
圖檔寬度大小超過 256,所以造成記憶體
上的錯誤, 建議您編寫程式測試時,可以開啟
CodeGuard , 可以減少並發現此類問題的
發生, Release 時在取消掉就好.
------
無限的想像,無盡的延伸。
編輯記錄
ChungLin.Net 重新編輯於 2007-10-03 13:51:33, 註解 無‧
ChungLin.Net 重新編輯於 2007-10-03 13:56:08, 註解 無‧
gyfatty
一般會員


發表:6
回覆:13
積分:8
註冊:2006-10-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-03 14:42:49 IP:140.124.xxx.xxx 訂閱
感謝 ChungLin.Net  兄教導~!!
關於pr 陣列大小,
是否是小弟會錯意,
pr 只存放圖片的所有灰階值的個數

小弟以為在動態方面是否才是錯誤的所在~


[code cpp]
for(int i=0;i<256-1;i )
pr[i 1] =(pr[i]);

[/code]
您指出地方不知道小弟這樣改是否您同意


jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-03 15:58:05 IP:210.66.xxx.xxx 訂閱
我想ChungLin.Net  兄的意思是,你應該在取得
Width後, 用以配置足夠的記憶體.

float *pr = new float[Width];

以下將你的程式碼重新做了一遍, 執行正常,
只是結果不知道是不是你要的.

[code cpp]
Image1->Picture->LoadFromFile("參考圖.BMP" );
Image1->Picture->Bitmap->PixelFormat = pf24bit;
Graphics::TBitmap *bmp = Image1->Picture->Bitmap;
int Width = bmp->Width;
int Height = bmp->Height;

Byte *ptr1, *ptr2;
float *pr = new float[Width];
try{
ZeroMemory(pr, sizeof(float)*Width);

Graphics::TBitmap *t = new Graphics::TBitmap();
try{
t->Assign(bmp);
for(int i=0; i ptr1 = (Byte*)bmp->ScanLine[i];
for(int j=0; j pr[ptr1[3*j]] ;
}

for(int i=0; i
for(int i=0; i
for(int i=0; i
for(int i=0; i ptr1 = (Byte*)bmp->ScanLine[i];
ptr2 = (Byte*)t->ScanLine[i];
for(int j=0; j ptr2[3*j] =pr[ptr1[3*j]];//pr[ptr1[3*i]]這個位置(ptr1)的灰階值給ptr2這個位置
ptr2[3*j 1]=pr[ptr1[3*j]];
ptr2[3*j 2]=pr[ptr1[3*j]];
}
}
Image2->Picture->Bitmap->Assign(t);
}
__finally{
delete t;
}
}
__finally{
delete pr;
}
}
[/code]
gyfatty
一般會員


發表:6
回覆:13
積分:8
註冊:2006-10-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-03 16:15:06 IP:140.124.xxx.xxx 訂閱
小弟太汗顏了~
jow
每次都麻煩您解決,

實在.....超神^^



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