[問題] 不是正確Win32應用程式

作者: uten4298169 (柳暗花明)   2014-10-03 22:34:57
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
小弟不才 最近打了一支程式 可以編譯 可是執行檔卻不能跑
打開執行檔 會跑出不是正確Win32應用程式
因模擬的需要
我在程式碼中 全域 宣告了幾個很大的陣列 如 int [9xxx][18xxx]
不知道是否是這樣的影響以及是否有解決的辦法
謝謝。
作者: bjiyxo (若自礌)   2014-10-04 00:12:00
就我所知,1個int是4B,如果像你宣告這麼大的int計算出來就0.648GB,如果你又不小心很多個,就算你的RAM有這麼多作業系統也不敢讓你跑這麼大的
作者: uten4298169 (柳暗花明)   2014-10-04 01:29:00
想問一下 這樣是否容易造成變數存取到不對的值?!謝謝
作者: mabinogi805 (焚離)   2014-10-04 02:18:00
連跑都不能跑你還在乎存取對不對XD?
作者: PoorLoser (廢文製造機)   2014-10-04 02:18:00
改用 new/delete 或 malloc/delete 吧實體記憶體不夠用 OS 會置換到 HD 頂多跑慢一點就是了打錯, 是 malloc/free
作者: bjiyxo (若自礌)   2014-10-04 02:51:00
我記得OS會管理每個程式的使用上限?(出自交大開放式課程
作者: Killercat (殺人貓™)   2014-10-04 04:37:00
炸掉可理解 但是「這不是正確的win32應用程式」這個這個prompt理解不能 這不是應該是執行檔格式錯誤才有?
作者: johnpage (johnpage)   2014-10-04 05:17:00
沒程式碼,空談
作者: loveflames (咕啾咕啾魔法陣)   2014-10-04 08:23:00
沒頭沒腦的,沒執行環境也沒程式碼你這個在32位元程式跑不動,user space超過2G若是64位元程式下出錯,那你得改用heap,因為存取了要驗證很簡單,用debugger確認是不是寫到了code secti
作者: flydragon198 (Richard)   2014-10-04 10:01:00
把int[9xxx][8xxx]改成int[1][1]看能不能執行就知道是不是因為宣告太大造成不能執行但是『不是正確Win32應用程式』我猜跟這個沒關係
作者: PoorLoser (廢文製造機)   2014-10-04 11:07:00
用VC2010試過,好像五六個10000*10000可編譯過,但執行時出現同樣錯誤可能是 data segment 的大小限制,初始化失敗
作者: QQ29 (我愛阿蓉)   2014-10-04 18:32:00
你確定專案開的是win32 desktop 的嗎看下pe header吧

Links booklink

Contact Us: admin [ a t ] ucptt.com