0

タイトルはほとんどすべてを示しています:ウィンドウの下で最小の空き仮想メモリアドレスを取得する方法はありますか?プログラムの開始時(動的メモリ割り当てが行われる前)に、この情報に関心があることを付け加えておきます。

mallocなぜそれが必要なのか: Windowsで実装を構築しようとしています。それが不可能な場合はVirtualAlloc()、最初のパラメーターとしてNULLを指定したときに返されるものをすべて実行する必要があります。利用可能なものの一番下にある割り当てメモリのように、それが賢明なことをすることを期待するでしょうが、保証はありません。

4

2 に答える 2

2

これは、無料としてマークされたページを探す VirtualQuery を使用して自分で実装できます。ただし、比較的遅いでしょう。(ページサイズとは異なる割り当ての粒度も考慮する必要があります。)

メモリの連続したブロックが必要でない限り、すべてを近づけようとすることはほとんど意味がありません.2つの仮想メモリページがアドレス空間で隣り合っている可能性がある場合、それらがそれぞれに近いと仮定する理由はありません.物理メモリ内のその他。実際、ある時点でそれらが互いに近くにある場合でも、それらのページがバッキング ストアに移動されてからメモリにフォールトされた場合、そのページは同じ物理アドレス ページにフォールトされません。

于 2010-07-08T18:46:29.523 に答える
0

OS は、利用可能な「最も低い」メモリ アドレスよりも複雑なメトリックを使用します。具体的にはVirtualAlloc、メモリのページを割り当てるため、要求する量に応じて、未使用のアドレス空間の少なくとも 1 ページが開始アドレスで使用可能である必要があります。そのため、使用すべき「下位」アドレスがあると考えたとしても、そのアドレスは、要求した操作と互換性がなかった可能性があります。

于 2010-07-08T18:45:49.360 に答える