→ azureblaze:matrix的大小是? 03/12 11:14
→ ShoPeter:為1024*8的大小 03/12 11:23
→ x000032001:如果scanf讀到EOF呢 03/12 12:05
→ ShoPeter:可是還沒有讀到EOF就會出現該錯誤了 03/12 12:38
→ pcyu16:動態宣告的部分打出來看一下 另外你那段code括號沒對稱.. 03/12 14:30
推 lc85301:我猜你的matrix是用靜態宣告,我遇過float陣列因為這樣 03/13 20:32
→ lc85301:所以資料出錯,改成malloc就OK了 03/13 20:33
上面的CODE是直接打的,漏括號了,原CODE沒漏
下面是我動態宣告的方式(原CODE是double)
int **data;
data = (int**)new char [height * sizeof(int *) + width * height * sizeof(int)];
for (i = 0; i < height; i++)
data[i] = (int *)data + height + i * width;
問題應該不是出現在BUFFER
我有用迴圈直接給值寫滿整個BUFFER,再讀出確認
是沒有問題的
※ 編輯: ShoPeter 來自: 27.243.75.56 (03/14 14:06)
推 loveflames:為什麼不設中斷點去看? 03/14 14:39
推 loveflames:改成這樣試試 03/14 15:02
→ loveflames:int * index=(int *)(data+height); 03/14 15:03
→ loveflames:for (i = 0; i < height; i++, index += width) 03/14 15:03
→ loveflames: data[i] =index; 03/14 15:03
→ loveflames:如果這樣也不行,就得用debugger看底層運作了 03/14 15:05
推 dirkc:我有個疑問, sizeof(int*) 是 4 或 8 ? 03/14 21:56
→ dirkc:就是你跑的系統架構是32或64? 03/14 21:57
→ dirkc:如果只是要解決問題的話,既然用C++的new乾脆用container 03/14 21:59
→ dirkc:覺得記憶體宣告方式有點奇怪,可能問題還是出在這... 03/14 22:03
推 yvb:動態配置那段, 如果是 32位元電腦, 用 int 可能不會發現錯誤; 03/18 18:26
→ yvb:若是 double **data; 請驗證 (double *) data + height 和 03/18 18:27
→ yvb:(double *) (data + height) 的差別. 03/18 18:27