[問題] 請問大陣列宣告後運算出現問題

看板C_and_CPP (C/C++)作者 (leehoni)時間16年前 (2009/03/12 21:32), 編輯推噓4(4023)
留言27則, 3人參與, 最新討論串1/2 (看更多)
請問各位大大 為了命很大的陣列rt[258][258][500],用了如下方法: int ***rt=new int**[258]; rt[258] = new int*[258]; rt[258][258] = new int[500]; 但是 再運算的時後,卻發生問題 for(i=0;i<258;i++) {for(j=0;j<258;j++) {for(k=0;k<500;k++) { rt[i][j][k]=0; <---這裡出現bug }}} 到底問題出在哪裡? 謝謝<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.135.93

03/12 21:36, , 1F
rt[258]是不能用的, size 258所以只有0~257可以用:)
03/12 21:36, 1F

03/12 21:36, , 2F
理論上應該會有memory access violation的錯誤報出來吧?
03/12 21:36, 2F

03/12 21:38, , 3F
不過程式一直到那執行到一行才顯示錯誤@@"
03/12 21:38, 3F

03/12 21:38, , 4F
int ***rt = new int**[258];
03/12 21:38, 4F

03/12 21:38, , 5F
for (int i = 0;i < 258;++i) {
03/12 21:38, 5F

03/12 21:38, , 6F
rt[i] = new int*[258];
03/12 21:38, 6F

03/12 21:38, , 7F
for (int j = 0;j < 258;++j) {
03/12 21:38, 7F

03/12 21:38, , 8F
rt[i][j] = new int[500];
03/12 21:38, 8F

03/12 21:38, , 9F
}
03/12 21:38, 9F

03/12 21:38, , 10F
}
03/12 21:38, 10F

03/12 21:38, , 11F
for (int i = 0;i < 258;++i) {
03/12 21:38, 11F

03/12 21:38, , 12F
for (int j = 0;j < 258;++j) {
03/12 21:38, 12F

03/12 21:38, , 13F
for (int k = 0;k < 500;++k) {
03/12 21:38, 13F

03/12 21:38, , 14F
rt[i][j][k] = 0;
03/12 21:38, 14F

03/12 21:38, , 15F
}
03/12 21:38, 15F

03/12 21:38, , 16F
}
03/12 21:38, 16F

03/12 21:38, , 17F
}
03/12 21:38, 17F
※ 編輯: leehoni 來自: 118.168.135.93 (03/12 21:39)

03/12 21:39, , 18F
很正常阿 ... 不知道哪邊錯了
03/12 21:39, 18F

03/12 21:46, , 19F
如果像樓上c板友這樣應該除非mem要爆了不然應該是ok....
03/12 21:46, 19F

03/12 21:46, , 20F
可是如果code真的像原po文裡寫的, 一定mem access vio的
03/12 21:46, 20F

03/12 21:50, , 21F
c板大的就不會bug耶 謝謝~~ 不過這樣用的原因是什麼阿?
03/12 21:50, 21F

03/12 21:51, , 22F
所以你的code就像你文裡寫的?? 那就真的是記憶體存取錯
03/12 21:51, 22F

03/12 21:52, , 23F
對 應該是記憶體存取錯了~~
03/12 21:52, 23F

03/12 21:52, , 24F
誤啊, rt[258]是不能用的; 還有, 你要幫rt[0]~[257]一個
03/12 21:52, 24F

03/12 21:52, , 25F
一個跑迴圈new, 不能用你原來那樣子的寫法....
03/12 21:52, 25F

03/12 21:53, , 26F
在板上找找二維或三維以上動態配置的範例看吧~_~
03/12 21:53, 26F

03/12 21:53, , 27F
3Q~
03/12 21:53, 27F
文章代碼(AID): #19kGxwlJ (C_and_CPP)
文章代碼(AID): #19kGxwlJ (C_and_CPP)