動態矩陣 |
答題得分者是:jow
|
gyfatty
一般會員 發表:6 回覆:13 積分:8 註冊:2006-10-18 發送簡訊給我 |
今宣告一動態矩陣,
執行檔可以執行, 但會產生錯誤: 主要code如下: [code c#] float *pr = new float [256]; 中間不贅述 delete pr; [/code] 是否使用動態須要注意哪些? 因為小弟只拿上述兩行在執行上是沒有問題 |
ChungLin.Net
中階會員 發表:2 回覆:33 積分:52 註冊:2006-07-26 發送簡訊給我 |
看了一下您的程式碼…
問題應該在於 [code cpp] float *pr = new float [256]; .............略........ for(int i=0;i for(int i=0;i [/code] 原因是您的 pr 陣列大小為 256,可是您的 圖檔寬度大小超過 256,所以造成記憶體 上的錯誤, 建議您編寫程式測試時,可以開啟 CodeGuard , 可以減少並發現此類問題的 發生, Release 時在取消掉就好.
------
無限的想像,無盡的延伸。
編輯記錄
|
gyfatty
一般會員 發表:6 回覆:13 積分:8 註冊:2006-10-18 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
我想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 for(int j=0; j } for(int i=0; i for(int i=0; i for(int i=0; i for(int i=0; i ptr2 = (Byte*)t->ScanLine[i]; for(int j=0; j 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |