• 締切済み

64ビット コマンドライン Cプログラミング

私の環境は以下のとおりです CPU x6800 メモリ 8GB Vista 64 sp1 Visual studio 2005 やりたいことは、コマンドプロンプト[ > ] で 大きな配列 char dem[1000][1000][2000] を使うCプログラムを作成し使用すること。 質問したいことは、 コマンドラインの環境設定(PATH: bin lib include) コンパイラ リンカ の/オプション はどのように設定したらよいのでしょうか。 現状は work.c のコンパイル+リンク で work.exe はエラーなく成功するのですが 実行すると、{ work.exeは有効な win32 アプリケーションではありません。} というエラーが出て実行できません。 配列の要素を2000->1000にすればもちろんエラーは出ません。 なおこのときのコマンドプロンプトは  Visual Studio 2005 x64 Win64 コマンド プロンプト PATH は次のようになっています。 PATH=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\BIN\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin\win64\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin;  C:\Windows\Microsoft.NET\Framework64\v2.0.50727;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\VCPackages;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\bin;  C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\bin;  C:\Windows\system32;C:\Windows;  C:\Windows\System32\Wbem;  C:\Windows\System32\WindowsPowerShell\v1.0\ 先達のご教示をお願いいたします。

みんなの回答

noname#208124
noname#208124
回答No.1

出来ません 64ビットネイティブバイナリのPE32+であってもメモリに展開後のサイズは2GBを超えられません(ファイルサイズではなく仮想メモリにメモリマッピングされた後のサイズです) http://msdn.microsoft.com/ja-jp/library/3hs5w5e3.aspx グローバル変数はEXE/DLLファイルの.dataセクションに突っ込まれますから他のと合わせて2GBを超えることになります 大きな配列は動的に確保してください

nogamijiji
質問者

補足

dumm さま 教示いただいたとりにやってみます。 質問で書き落としましたが、 配列はグローバルにとっています(下記)。 char dem[1000][1000][2000]; int main() {;} この場合は実行しようとしたとき、エラーが出ます。 いっぽう、main の中でこの配列をとると、値を代入した時に エラーとなります。 main の中で動的に確保しても代入の段階でエラーになると あたまから決めてかかっていました。 ありがとうございました。

関連するQ&A