こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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\

先達のご教示をお願いいたします。

投稿日時 - 2009-02-24 12:36:02

QNo.4744857

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

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

大きな配列は動的に確保してください

投稿日時 - 2009-02-24 16:33:37

補足

dumm さま

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

投稿日時 - 2009-02-25 13:10:36

あなたにオススメの質問