私はwin7で作業しており、mallocを使用して2つのバッファーを割り当てる必要があります。最初の割り当ては、それぞれ660Mバイトで問題ありませんが、2番目のバッファーの割り当ては失敗します。ディスクに670Gの空きメモリがあります。mallocの最大サイズはどれくらいですか?上記の問題の理由は何でしょうか?
1702 次
2 に答える
2
有効な最大malloc()
サイズは、プロセスヒープの状態に適合するサイズです。ヒープは断片化する可能性があります(たとえば、600Mの空きメモリチャンク、次に20Mの使用済みチャンク、次に600MBの空きチャンクのヒープがあります-1.2GBの空きメモリがあるにもかかわらず、650Mを取得することはできません)。
さらに、DLLをロードするWindowsメカニズムであるAFAIKは、すべてのライブラリを特定のアドレスに結び付けるため、メモリはDLLによってすでにフラグメント化されている可能性があります。
于 2012-10-10T12:28:37.170 に答える
1
670Gの空きメモリがあるとおっしゃいましたが、それはハードディスクの空き容量です。
実行中のプログラムはRAMにメモリを必要とし、おそらくRAMメモリは必要なメモリよりも少なくなっています。したがって、mallocを使用したメモリの割り当てでエラーが発生します。
于 2012-10-10T12:47:29.867 に答える