看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
ericinttu:stack size, heap size (找看看) 幾天前也有人問過 08/24 23:13
tropical72:我怎都不知道 VS 有 2006... 08/24 23:13
※ 編輯: smvenjoy 來自: 115.43.156.175 (08/24 23:38)
smvenjoy:樓上抱歉,已修改 08/24 23:39
smvenjoy:請問一下一樓,在VC裡要怎麼修改??謝謝了!!! 08/24 23:52
elfkiller:用動態二維陣列吧 08/24 23:56
ericinttu: diabloevagto □ [問題] 讀檔程式會當掉 08/24 23:59
firejox:malloc new 或者改一下compiler flag(雖然我不知道怎麼改) 08/24 23:59
ericinttu:我好像記錯 IDE了, 但推文資訊應該有用. 08/24 23:59
firejox:gcc 似乎可以讓stack加大...VC我就不太清楚 08/25 00:00
tropical72:vc 2008, stack 硬調 : http://ppt.cc/0wS6 08/25 00:21
smvenjoy:樓上請問一下,要從哪邊叫出設定的畫面,謝謝啦!! 08/25 00:35
tropical72:專案->xxxx 屬性 (xxxx 為你的專案名稱) 08/25 00:39
smvenjoy:謝謝謝謝!!! 08/25 00:41
smvenjoy:就是從project那邊進去改嗎?? 08/25 00:42
tropical72:英文的話是叫 project,其它中英文自己對照一下. 08/25 00:44
smvenjoy:不好意思,我找不到可以設定的,http://ppt.cc/LpmA 08/25 00:52
tropical72:你 vc 到底是哪一版?註明清楚好嗎? 08/25 00:53
smvenjoy:不好意思,Microsoft Visual c++ 08/25 00:54
smvenjoy:因為剛入門不太熟,抱歉了阿 08/25 00:55
tropical72:Orz..VC6.0/VC2002/VC2003/VC2005/VC2008/VC2010 08/25 00:56
tropical72:我實在搞不懂你啊.. 08/25 00:56
smvenjoy:Visual C++ 6.0 Professional Edition 08/25 00:56
smvenjoy:抱歉抱歉... 08/25 00:57
tropical72:http://ppt.cc/mMW_ 哪套 compiler 不知道實在說不過去 08/25 01:04
smvenjoy:真是麻煩你了,因為剛接觸,會好好學習的!!謝謝謝謝啦 08/25 01:05
smvenjoy:改過了,還是會出現一樣的錯誤,我改成500000000 08/25 01:10
tropical72:你改太大了,6.0 最大也只能到 2G,如果你記憶體吃超過2G 08/25 01:12
tropical72:你該考慮換作業系統、加memory、換 compiler,或 08/25 01:12
tropical72:換演算法,5G 在此不可能的,先算一下你 array 共吃多少 08/25 01:13
tropical72:多看一個0, 直接先改 150000000 08/25 01:14
smvenjoy:恩恩,謝謝!!我在試看看,太感謝了 08/25 01:14
tropical72:寫錯,是改 1,500,000,000 08/25 01:14
tropical72:再補一下,如果改成 0xFFFFFFFF 都過不去 08/25 01:21
tropical72:代表你該換演算法,或分批/分散/檔案方式處理。 08/25 01:22
ericinttu:VC 6.0 不能在 Win 7跑, 所以要換成64 bit系統的話, 08/25 01:22
smvenjoy:如果換compiler或加大記憶體是有可能可以執行的嗎? 08/25 01:22
ericinttu:VS 也要換新一點的 xd 08/25 01:22
tropical72:我認為,你有必要把你所有陣列的宣告先放出來. 08/25 01:23
smvenjoy:我是在win7 32bit 3G記憶體跑 08/25 01:23
tropical72:非常同意ericinttu, 我受不了 VC6 一些 bug 才跳 2008 08/25 01:24
tropical72:「陣列宣告」,我要算你吃了多少記憶體. 08/25 01:24
smvenjoy:恩恩,我會試看看,謝謝你們...謝謝 08/25 01:25
ericinttu:是噢, 大概是我的 win 7 home p + vc6.0 比較討厭我 xd 08/25 01:25
tropical72:剛試過了,stack 沒辦法到 int x[8][4096][4096] 08/25 01:34
tropical72:但用在 heap 上就行 08/25 01:34
tropical72:動態配置程式碼參考: http://codepad.org/SQ3KEBcv 08/25 01:35
tropical72:慢慢研究.. 08/25 01:35
smvenjoy:恩恩,真是太感謝了..謝謝!!! 08/25 01:36
tropical72:再完整、保險一點的好了,http://codepad.org/DymA7cSe 08/25 01:37
tropical72:試完後無論成功與否,請讓各位版友知道,謝謝。 08/25 01:38
smvenjoy:恩恩,謝謝你!! 08/25 01:39
smvenjoy:試過可以了,接下來要繼續做下去,謝謝謝!!! 08/25 01:40
diabloevagto:建議可以直接用stl 08/25 18:26
tropical72:樓上忠懇 08/25 21:59
angleevil:.....中肯 08/26 13:55