[問題] Runtime error on large array size

看板C_and_CPP (C/C++)作者 (愛君如夢)時間13年前 (2012/12/23 13:46), 編輯推噓7(7011)
留言18則, 11人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我因為是新手,所以我也不知道我的問題應該要找甚麼關鍵字,還請大家多幫忙 我有一個陣列,比如說是(6400*19200) 那我就宣告 double n[6400][19200] 可是這樣我的dev-C++就有問題 但如果是 double n[100][300] 。就OK,所以我想請問這是甚麼問題? 是記憶體太小嗎? 我又該怎樣解決 謝謝大家幫忙!! 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.31.114.182 ※ 編輯: allenmaddux 來自: 76.31.114.182 (12/23 13:48)

12/23 14:00, , 1F
sizeof(double) * 6400 * 19200 = ???
12/23 14:00, 1F

12/23 14:32, , 2F
heap太小,你要用動態宣告
12/23 14:32, 2F

12/23 15:29, , 3F
array size太大, 空間不夠
12/23 15:29, 3F

12/23 15:32, , 4F
我算是937.5MB 將近1G
12/23 15:32, 4F

12/23 15:57, , 5F
是stack太小吧?動態宣告才是從heap給不是?
12/23 15:57, 5F

12/23 16:11, , 6F
原來我搞錯heap跟stack
12/23 16:11, 6F

12/23 16:28, , 7F
解決方法: 改進你的演算法
12/23 16:28, 7F

12/23 18:02, , 8F
解決辦法不是改用heap+改compile成64bit app+叫client用
12/23 18:02, 8F

12/23 18:02, , 9F
64bit OS/lib+叫client買多一點ram促進電腦產業進步嗎(?
12/23 18:02, 9F

12/23 18:03, , 10F
(雖然說1G還沒爆32bit app limit但是可能原po的程式還有
12/23 18:03, 10F

12/23 18:03, , 11F
很多這種array XD)
12/23 18:03, 11F

12/23 19:05, , 12F
若將近1G, 32bit下vir addr能不能一次配到都是個問題XD
12/23 19:05, 12F

12/23 19:40, , 13F
除非你的stack是黑洞吧XD
12/23 19:40, 13F

12/23 19:47, , 14F
我給原po兩個建議:1) 搞懂什麼是stack和heap
12/23 19:47, 14F

12/23 19:48, , 15F
2) 搞懂什麼是virtual address space
12/23 19:48, 15F

12/24 20:52, , 16F
1G 很小阿= = 怎麼會爆
12/24 20:52, 16F

12/25 21:04, , 17F
會, 預設的 stack section size 本來就不大
12/25 21:04, 17F

12/25 21:04, , 18F
看是要用 heap 或是 data, 不然就改 compiler 參數
12/25 21:04, 18F
文章代碼(AID): #1Grfh5YH (C_and_CPP)
文章代碼(AID): #1Grfh5YH (C_and_CPP)