1

malloc()プロセスのメモリ空間内で実質的に連続するメモリ チャンクを割り当てます。malloc()バイト単位のパラメータとしてサイズを取り、その割り当てられたメモリ空間へのポインタを返しますが、要件が 4k で整列されたメモリを割り当てることである場合はどうなりますか?

4

3 に答える 3

1

多くの場合、4K バイトはページのサイズなので ( sysconf(3)_SC_PAGESIZEまたは古いgetpagesize(2) syscall を参照)、mmap (2) syscall (mallocおよびで使用されるposix_memalign) を使用して、4Kaligned メモリを取得できます。

于 2013-07-03T05:50:25.617 に答える
0

ユーザー空間に物理的に連続したメモリを割り当てることはできません。ユーザー空間では、カーネルは常にhighmemゾーンからメモリを割り当てるためです。ただし、カーネル モジュールまたはシステム空間コードを作成している場合は、_get_page() または _get_pages() を使用できます。

于 2013-07-03T06:34:55.620 に答える