mmap()を使用して特定のアドレスに近いバッファを割り当てることを計画しています。malloc()はmmap()を使って割り当てられた別のバッファと重なるバッファを割り当てることはできますか?
私が心配しているのは、mmap()を使って割り当てられたバッファは、malloc()またはnew演算子(C++)によって割り当てられた他のバッファと重なり合うことです。出来ますか?
mmap()を使用して特定のアドレスに近いバッファを割り当てることを計画しています。malloc()はmmap()を使って割り当てられた別のバッファと重なるバッファを割り当てることはできますか?
私が心配しているのは、mmap()を使って割り当てられたバッファは、malloc()またはnew演算子(C++)によって割り当てられた他のバッファと重なり合うことです。出来ますか?
いいえ、それは起こりません。
malloc
機能によって維持ヒープは、カーネルが二回mmap
を経由して同じブロックを与えた場合のメモリ領域のみを再利用できるので、brk
またはmmap
を介して確立されている仮想マッピングに住んでいます。
マッピングされたメモリをmallocで割り当てる必要があります。 mallocedメモリは重複しません。そうではありません、あなたは大丈夫でしょう。
あなたはははい、それは可能であるが、特定のアドレスにマッピングを作成mmap
を要求するMAP_FIXED
を使用する場合には、そのようななどmalloc
によって割り当てられたスペース、共有ライブラリのコードまたはデータセクションの一部として、既存のマッピングを上書き 。MAP_FIXED
を指定せずにmmap
を呼び出してアドレス範囲を取得していない限り、基本的にはMAP_FIXED
を使用するとエラーになります。この場合、MAP_FIXED
を使用してマッピングの一部を意図的に上書きすることができます)。
その他の回答は、あなたが「特定の住所に近い」と言ったという事実を忘れていたようで、私にとってはMAP_FIXED
を意味しています。 MAP_FIXED
を使用していない場合は、「特定の住所に近い」マッピングをどのように取得しているかを詳しく説明してください。
あなたが 'MAP_FIXED' ... –
@Rを使用している場合、この回答は間違っています。 –