1

mmap()が 32 ビット アドレスを返すのに 64 ビット アドレスを返すのはなぜmalloc()ですか?

char *a = (char *)mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
printf("%p\n", a); // example: 0x7fbfbb065000

char *b = (char *)malloc(10); // example: 0x23bf010
printf("%p\n", b);
4

3 に答える 3

0

システムに 64 ビット ポインターがある場合、両方とも 64 ビット アドレスを返します。たまたまmalloc、上位 32 ビットが 0 に設定された 1 が返されます。なぜそれが実装に完全に依存するのかは、質問がタグ付けlinuxされているため、ソースを調べて見つけることができます!

于 2013-07-06T16:18:20.030 に答える