私はWindows用のかなり大きなMFCアプリケーションを持っていますが、これは32ビット版のリリース版としてVisual Studioでビルドしたものです。Windows 32ビットmfcアプリケーション用の仮想メモリのアドレス。
私はintインデックスメンバーを持つ私のアプリケーションにいくつかの特別なクラスがあります。そのインデックスは、常にメモリ内のそのオブジェクトのアドレスと同じです。そして、すべて正常に動作します。
しかし、今私は、そのクラスのオブジェクトを含んでいない私のアプリケーションの仮想メモリ内のいくつかの領域を決定する必要があります。 私はデバッガでそれらを見るので、間隔の値は通常非常に低いまたは非常に高いものではありませんが、いくつかの値の周りにあります。セーフティでアドレス0〜10k(0x0000〜0x2710)にその特定のクラスのオブジェクトが含まれていないとすることができますか?そうでない場合は、「安全」なアドレス空間がいくつかありますか?
もしそうでなければ、私は自分自身でダミーのプールを割り当てて他のオブジェクトが作成されないことを確かめることができます。あなたが単一の項目のみが必要な場合
は、別々のヒープを作成し、このクラスの 'オペレータnew'を上書きし、これはあなたが'いくつかのアドレス空間を割り当てるために、 'VirtualAllocの(MEM_RESERVE)を使用することができます – RbMm
このヒープからオブジェクトを割り当てます。あなたがそれを置かない限り、そのアドレススペースには何も入りません。代替:Windowsは、メモリの最下位64KB(0x0000から0xFFFF)にオブジェクトを配置しません。 Windows 8以前では、アプリケーションは手動でオブジェクトを配置するトリックを引き出すことができましたが、Windows 8からはこれも許可されていません。 –
提案されている解決策について質問しています。しかし、あなたは本当に解決しようとしている問題は何ですか? – IInspectable