Re: [問題] 二維陣列大小

看板C_and_CPP作者 (劍逼)時間15年前 (2010/05/30 08:58), 編輯推噓3(3014)
留言17則, 10人參與, 最新討論串2/2 (看更多)
後來改成這樣 int **T = new int*[n]; for( int i=0; i<n; ++i ) T[i] = new int[n]; 但是依然會出現記憶體錯誤的訊息 ※ 引述《a29831287 (劍逼)》之銘言: : 我去開一個矩陣的時候 : 用的是這樣 : int T[n][n]; : n是已經處理好的變數 : 但是 : 當我的n到達一個的較大值的時候(一千多就不行了) : 跑程式的時候就會出現錯誤訊息"Segmentation fault" : 想請問是因為array到達一個大小值之後記憶體不夠嗎 : 如果是這樣的話該怎麼解決 : 因為是二維 vector好像沒辦法解決? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.97.152

05/30 17:11, , 1F
你的n多大?
05/30 17:11, 1F

05/30 17:14, , 2F
一兩千就不行了
05/30 17:14, 2F

05/30 17:37, , 3F
segment fault 比較是你陣列存取超出範圍而不是記憶體不夠
05/30 17:37, 3F

05/30 18:16, , 4F
可是在n比較小的情況下都OK
05/30 18:16, 4F

05/30 18:18, , 5F
step-by-step debugging by yourself ?
05/30 18:18, 5F

05/30 19:18, , 6F
會不會是溢位?改用long的話還會嗎?
05/30 19:18, 6F

05/30 22:06, , 7F
不行的話就用動態配置吧...
05/30 22:06, 7F

05/30 23:15, , 8F
樓上...XD
05/30 23:15, 8F

05/31 00:55, , 9F
不是long的問題耶 應該是開到太大
05/31 00:55, 9F

05/31 05:49, , 10F
應該根本是後面的 code 存取記憶體不合法 與此無關吧?
05/31 05:49, 10F

05/31 16:31, , 11F
依舊是在n在一個範圍底下都可以運作 超過就跳錯誤訊息
05/31 16:31, 11F

05/31 16:36, , 12F
如果你懷疑是new太大導致的, 在每一個new的後面都去檢查
05/31 16:36, 12F

05/31 16:37, , 13F
new回來的address是不是NULL, 或者掛exception去檢查;
05/31 16:37, 13F

05/31 16:38, , 14F
只是你要的記憶體才1x MB, 看起來不至於是要不到說....
05/31 16:38, 14F

05/31 16:39, , 15F
另外, 請順便報上開發環境/工具....
05/31 16:39, 15F

05/31 19:24, , 16F
linux/vim gcc make
05/31 19:24, 16F

05/31 20:12, , 17F
那就用 gdb 慢慢跑吧 看看到底是死在哪/當時的情況
05/31 20:12, 17F
文章代碼(AID): #1C0YZHYs (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
2
7
完整討論串 (本文為第 2 之 2 篇):
問題
2
7
文章代碼(AID): #1C0YZHYs (C_and_CPP)