Windowsアプリケーションの画像ヘッダーに/ LARGEADDRESSAWAREコンパイラフラグを使用してIMAGE_FILE_LARGE_ADDRESS_AWARE
が設定されている場合、通常32ビットアプリケーションで2GBを超えるメモリを使用できるようになります32ビットオペレーティングシステムがboot.iniに3GBスイッチを設定している場合)。詳細については、MSDN article /3GBを参照してください。IMAGE_FILE_LARGE_ADDRESS_AWAREおよび3GB OSスイッチ
私の質問は、3GBスイッチが設定されていないシステムでこのアプリケーションを実行するとどうなりますか?それは単に無視されますか?または、アプリケーションは3GBのヒープを試して使用し、メモリ不足のエラーが発生するのはユーザースペースが2GBしかないからですか?
LARGEADDRESSAWAREスイッチは2GBのユーザースペースシステムでは無視されていますが、これに関する公式のMicrosoftドキュメントは見つかりませんでした。
ありがとうございます。
注: 32ビットシステムで3Gbを使用する場合、自己責任でハードウェアとドライバを制御しないと、ブルースクリーニングの可能性が高くなります。 Win64では、32ビットプロセスで完全に安全な4Gbアドレスを提供します。また、バイナリを調整してフラグを設定することもできます。 – morechilli
ハードウェアとドライバを制御しないとブルースクリーニングの可能性が高くなる可能性があります カーネルスペースが1 GBに下がるため、これは可能なドライバが多いメモリが足りなくなる。 – Todd
トッド:うん、それだけではない。ドライバの多くは、単に "アドレスへのすべてのポインタ> 2GBがカーネル空間を指していると仮定するかもしれません。すべて<2GBはユーザ空間です。 – jalf