2012-02-26 20 views

答えて

5

posix_memalignmallocfreereallocとと相互運用するように設計さmmapより高いレベルのAPIです。 mmap使用法は、posix_memalign(プロセスのアドレス空間にファイルをマッピングする)より多くの機能を提供するため、より複雑です。実装方法(mmapまたはそれ以外の点で)は、POSIX規格では指定されていません。

posix_memalignここでは、整列の制限がない場合はmallocを使用します。

1

mmapが利用可能な場合、posix_memalignは通常mmapを使用して実装されます。主な違いは、posix_memalignがstdlib.hにあることです。mmapは、利用できない可能性があり、異なるプラットフォームで異なるセマンティクスを持つシステムコールです。

+0

'mmap'はPOSIXで指定されているため、準拠しているプラ​​ットフォームでは同じセマンティクスを持つ必要があります。 –

+0

@larsmans: 'mmap'がX/Open(POSIX)によって' MAP_ANON'フラグ/挙動(メモリを割り当てるために 'mmap'を使うため)と' -1'を使って指定されました。ポータブル仕様。 'mmap'の標準ではないものについてはhttp://pubs.opengroup.org/onlinepubs/009695399/functions/mmap.htmlを参照してください。 –

1

アライメントサイズが4096バイトのposix_memalignは、mmapとどのように違いますか?

明らかな答え:posix_memalignは、任意のファイルをfdでmmapできません。 :)

posix_memalignとmmapの割り当て動作(MAP_ANOYMOUS):posix_memalign(size)がmmapを使用する必要はありません。 sbrkのメカニズムをmallocとの間で共有することもできますし、brk領域の一部に適切に位置合わせされたポインタを返すこともできます。

関連する問題