calloc
1 ギガバイトをわずかに超える 1 つの要素を呼び出す必要があります。この呼び出しは を返しNULL
、errno をチェックするとメモリ不足エラーが明らかになります。ただし、テスト中、使用可能な仮想メモリは言うまでもなく、ほぼ 4 ギガバイトの空き RAM があります。
この問題を調査した後、なぜ失敗したかについて思いつくことができる唯一のことは、使用可能な連続したメモリcalloc
が十分にないということです。ただし、4Gb の使用可能なメモリがあれば、~= 1Gb の連続したメモリを使用するのは簡単なはずです。連続したメモリの可用性を確認する方法はありますか? これが問題である場合、メモリを「最適化」する簡単な方法はありますか?
それとも、これは割り当てられたメモリのブロックサイズと関係があるので、実際には利用可能なメモリよりも多くのメモリを割り当てようとしていますか? 失敗の原因を特定するためのオプションは何ですか? この大量のメモリを正常に割り当てるためのオプションは何ですか?
12Gb のメモリを搭載したネイティブ Windows システムを使用しています。次に、VM で実行して、VM に数ギガバイトのメモリを割り当て、仮想マシンが十分な連続メモリに非透過的にアクセスできるかどうかを確認します。今日それを完了したら、ここに結果を投稿します。