[問題] 運算太多大的陣列造成錯誤無法執行

看板C_and_CPP作者 (好好壞壞~~)時間14年前 (2011/08/24 23:09), 編輯推噓5(5050)
留言55則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Visual C++ 問題(Question): 執行太多個如:a[4096][4096]較大的陣列運算,會造成出現 "Unhandled exception in xxx.exe:0xC0000005:Access Violation", 造成無法執行的結果 預期的正確結果(Expected Output): 因為實驗需要,必須使用如a[4096][4096]等多個大型矩陣的運算, 但執行卻會出現錯誤. 錯誤結果(Wrong Output): "Unhandled exception in xxx.exe:0xC0000005:Access Violation" 補充說明(Supplement): 不知道c程式是不是有限制只能做幾個較大的陣列,因為本身試過宣告七個讓它為0的陣列, 如:a1[4096][4096]=0.......a7[4096][4096]=0,即執行七個陣列的話是可以執行, 但若在加上一個a8[4096][4096]=0,即會出現上述的錯誤,造成無法執行, 想請問各位不曉得有沒有什麼方法可以解決,還是程式本身就有限制了? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.156.175

08/24 23:13, , 1F
stack size, heap size (找看看) 幾天前也有人問過
08/24 23:13, 1F

08/24 23:13, , 2F
我怎都不知道 VS 有 2006...
08/24 23:13, 2F
※ 編輯: smvenjoy 來自: 115.43.156.175 (08/24 23:38)

08/24 23:39, , 3F
樓上抱歉,已修改
08/24 23:39, 3F

08/24 23:52, , 4F
請問一下一樓,在VC裡要怎麼修改??謝謝了!!!
08/24 23:52, 4F

08/24 23:56, , 5F
用動態二維陣列吧
08/24 23:56, 5F

08/24 23:59, , 6F
diabloevagto □ [問題] 讀檔程式會當掉
08/24 23:59, 6F

08/24 23:59, , 7F
malloc new 或者改一下compiler flag(雖然我不知道怎麼改)
08/24 23:59, 7F

08/24 23:59, , 8F
我好像記錯 IDE了, 但推文資訊應該有用.
08/24 23:59, 8F

08/25 00:00, , 9F
gcc 似乎可以讓stack加大...VC我就不太清楚
08/25 00:00, 9F

08/25 00:21, , 10F
vc 2008, stack 硬調 : http://ppt.cc/0wS6
08/25 00:21, 10F

08/25 00:35, , 11F
樓上請問一下,要從哪邊叫出設定的畫面,謝謝啦!!
08/25 00:35, 11F

08/25 00:39, , 12F
專案->xxxx 屬性 (xxxx 為你的專案名稱)
08/25 00:39, 12F

08/25 00:41, , 13F
謝謝謝謝!!!
08/25 00:41, 13F

08/25 00:42, , 14F
就是從project那邊進去改嗎??
08/25 00:42, 14F

08/25 00:44, , 15F
英文的話是叫 project,其它中英文自己對照一下.
08/25 00:44, 15F

08/25 00:52, , 16F
不好意思,我找不到可以設定的,http://ppt.cc/LpmA
08/25 00:52, 16F

08/25 00:53, , 17F
你 vc 到底是哪一版?註明清楚好嗎?
08/25 00:53, 17F

08/25 00:54, , 18F
不好意思,Microsoft Visual c++
08/25 00:54, 18F

08/25 00:55, , 19F
因為剛入門不太熟,抱歉了阿
08/25 00:55, 19F

08/25 00:56, , 20F
Orz..VC6.0/VC2002/VC2003/VC2005/VC2008/VC2010
08/25 00:56, 20F

08/25 00:56, , 21F
我實在搞不懂你啊..
08/25 00:56, 21F

08/25 00:56, , 22F
Visual C++ 6.0 Professional Edition
08/25 00:56, 22F

08/25 00:57, , 23F
抱歉抱歉...
08/25 00:57, 23F

08/25 01:04, , 24F
http://ppt.cc/mMW_ 哪套 compiler 不知道實在說不過去
08/25 01:04, 24F

08/25 01:05, , 25F
真是麻煩你了,因為剛接觸,會好好學習的!!謝謝謝謝啦
08/25 01:05, 25F

08/25 01:10, , 26F
改過了,還是會出現一樣的錯誤,我改成500000000
08/25 01:10, 26F

08/25 01:12, , 27F
你改太大了,6.0 最大也只能到 2G,如果你記憶體吃超過2G
08/25 01:12, 27F

08/25 01:12, , 28F
你該考慮換作業系統、加memory、換 compiler,或
08/25 01:12, 28F

08/25 01:13, , 29F
換演算法,5G 在此不可能的,先算一下你 array 共吃多少
08/25 01:13, 29F

08/25 01:14, , 30F
多看一個0, 直接先改 150000000
08/25 01:14, 30F

08/25 01:14, , 31F
恩恩,謝謝!!我在試看看,太感謝了
08/25 01:14, 31F

08/25 01:14, , 32F
寫錯,是改 1,500,000,000
08/25 01:14, 32F

08/25 01:21, , 33F
再補一下,如果改成 0xFFFFFFFF 都過不去
08/25 01:21, 33F

08/25 01:22, , 34F
代表你該換演算法,或分批/分散/檔案方式處理。
08/25 01:22, 34F

08/25 01:22, , 35F
VC 6.0 不能在 Win 7跑, 所以要換成64 bit系統的話,
08/25 01:22, 35F

08/25 01:22, , 36F
如果換compiler或加大記憶體是有可能可以執行的嗎?
08/25 01:22, 36F

08/25 01:22, , 37F
VS 也要換新一點的 xd
08/25 01:22, 37F

08/25 01:23, , 38F
我認為,你有必要把你所有陣列的宣告先放出來.
08/25 01:23, 38F

08/25 01:23, , 39F
我是在win7 32bit 3G記憶體跑
08/25 01:23, 39F

08/25 01:24, , 40F
非常同意ericinttu, 我受不了 VC6 一些 bug 才跳 2008
08/25 01:24, 40F

08/25 01:24, , 41F
「陣列宣告」,我要算你吃了多少記憶體.
08/25 01:24, 41F

08/25 01:25, , 42F
恩恩,我會試看看,謝謝你們...謝謝
08/25 01:25, 42F

08/25 01:25, , 43F
是噢, 大概是我的 win 7 home p + vc6.0 比較討厭我 xd
08/25 01:25, 43F

08/25 01:34, , 44F
剛試過了,stack 沒辦法到 int x[8][4096][4096]
08/25 01:34, 44F

08/25 01:34, , 45F
但用在 heap 上就行
08/25 01:34, 45F

08/25 01:35, , 46F
動態配置程式碼參考: http://codepad.org/SQ3KEBcv
08/25 01:35, 46F

08/25 01:35, , 47F
慢慢研究..
08/25 01:35, 47F

08/25 01:36, , 48F
恩恩,真是太感謝了..謝謝!!!
08/25 01:36, 48F

08/25 01:37, , 49F
再完整、保險一點的好了,http://codepad.org/DymA7cSe
08/25 01:37, 49F

08/25 01:38, , 50F
試完後無論成功與否,請讓各位版友知道,謝謝。
08/25 01:38, 50F

08/25 01:39, , 51F
恩恩,謝謝你!!
08/25 01:39, 51F

08/25 01:40, , 52F
試過可以了,接下來要繼續做下去,謝謝謝!!!
08/25 01:40, 52F

08/25 18:26, , 53F
建議可以直接用stl
08/25 18:26, 53F

08/25 21:59, , 54F
樓上忠懇
08/25 21:59, 54F

08/26 13:55, , 55F
.....中肯
08/26 13:55, 55F
文章代碼(AID): #1ELHGyXz (C_and_CPP)