2017-05-19 7 views
1

64ビットWindows 10システムに2GBのRAMしか割り当てることができない32ビットWindows XP用の古いアプリケーションがあります。このアプリケーションは、大量のデータを格納する際に2GBのRAM以上を使用しようとして、私はこの1つのようにメモリ不足の例外を取得しています:再コンパイルせずにさらにRAMを割り当てます。

Out of memory 8 addresses: (unknown)(0): Worldbuilder.exe+825384 (unknown) (unknown)(0): Worldbuilder.exe+798965 (unknown) (unknown)(0): Worldbuilder.exe+793330 (unknown) (unknown)(0): Worldbuilder.exe+793277 (unknown) (unknown)(0): Worldbuilder.exe+799637 (unknown) (unknown)(0): Worldbuilder.exe+666356 (unknown) (unknown)(0): Worldbuilder.exe+664774 (unknown) (unknown)(0): Worldbuilder.exe+723505 (unknown) Because of the severity of this error the game will now exit.

注:のソースコードアプリケーションは利用できません。

私はまたLarge Address Awareのように、アプリケーションはを再コンパイルすることなく、アプリケーションRAM の最大4GB割り当てできるようにすることで、この問題を解決するいくつかのツールを見ました。

私の質問は今です: どのようにこれらのツールはこれを達成することができます。

参考:私はプログラミング言語C++/CでWindows 10 64bitを使用しています。私はまだ理論的にどのように動作するのかわからないので、まだコードはありません。

+0

[実行可能ファイルヘッダー](https://msdn.microsoft.com/en-us/library/windows/desktop/ms680313(v = vs.85).aspx)の単なるビットです。 IMAGE_FILE_LARGE_ADDRESS_AWAREにはすべてが必要です。 5行のコードを受け取ります。 –

答えて

1

実行可能ファイルのWin32PEヘッダーに大きなアドレス認識フラグを設定します。これは通常、リンク時に設定されます。アプリケーションは、割り当てられた32ビット値を使用してそれらの割り当てにインデックスを付ける場合、2Gを超えるメモリ割り当てを実際に処理することはできません。

関連する問題