[問題] 請問如何用struct 宣告大的陣列?

看板C_and_CPP作者 (南電北送 e04)時間14年前 (2009/10/06 21:39), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串1/1
如標題 今天若我自己編寫一個 struct 叫做 ABC 那我該如何宣告出大的陣列呢? 例如 宣告 ABC temp[size] size=512 DEBUG會過 但只要 size > 175000 就會跳陣列大小不得超越7fffffff個位元組 請問我該如何用我自創的sturct 去宣告大的陣列呢? 希望知道的大大可以教小弟一下 萬分感謝 ==================================================== 我有試過用 在main中用下列兩種方式(當size =150000) ABC temp[size]; ABC *temp = new ABC[size]; 雖然DEBUG都會過 但是執行會跳出 於 0x7c812afb 的 Find base.exe 中發生未處理的例外狀況: Microsoft C++ 在記憶體 位置 0x0012fd7c,發生例外狀況: std::bad_alloc 但當我用 struct ABC{ int a; int aa[512][2]; }temp[size]; 即可正常使用 temp 和 Vic大討論過 覺得是因為 global 跟 local之分別 影響到會不會爆炸 但如果我必須用到20W個 ABC型態之ARRAY 我自己是想只能多宣告幾個ARRAY去放 有大大有比較好的方法嗎 環境為 visual studio 2008 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.14.178

10/06 21:44, , 1F
用malloc(for C)或new(for C++)做動態配置的....
10/06 21:44, 1F
※ 編輯: S4snow 來自: 140.120.14.178 (10/06 21:53)

10/06 21:54, , 2F
用宣告的SIZE大概可以設到 170000
10/06 21:54, 2F

10/06 21:55, , 3F
用 new ABC[size] 大概到50000.60000 就會出現執行錯誤
10/06 21:55, 3F

10/06 22:18, , 4F
你用[]宣告的是配置在stack 比用new的小很多 一定爆阿
10/06 22:18, 4F
※ 編輯: S4snow 來自: 140.120.14.178 (10/06 22:39)

10/06 22:33, , 5F
不然就要改變編譯器的設定了
10/06 22:33, 5F
※ 編輯: S4snow 來自: 140.120.14.178 (10/06 22:40)

10/06 22:41, , 6F
這個除了改演算法就是用memory mapped IO了吧?_?
10/06 22:41, 6F

10/06 22:42, , 7F
可是....有 14x GB 這麼大喔....XD
10/06 22:42, 7F

10/06 23:20, , 8F
20W耶應該實作資料庫吧..,簡單點就把資料採儲存格式讀取
10/06 23:20, 8F
文章代碼(AID): #1AoqXrrX (C_and_CPP)