Mac 上的 mmap 可以返回空吗?



Linux 手册页和 POSIX 标准都指定,只要不提供MAP_FIXED标志,mmap就可以保证不返回从地址 0 开始的内存。但是,Macmmap手册页中没有记录此类保证。

我不确定Mac对POSIX的遵守有多严格。它的mmap提供这种保证吗?

macOS 符合 POSIX 标准。事实上,它被认证为正式符合UNIX标准,这意味着符合POSIX标准。

此外,在 macOS 的链接器手册页中,ld

-pagezero_size size
By default the linker creates an unreadable segment starting
at address zero named __PAGEZERO.  Its existence will cause a
bus error if a NULL pointer is dereferenced.  [...]
By default on 32-bit architectures the page zero size
is 4KB.  On 64-bit architectures, the default size is 4GB.
[...]

因此,除非您执行了非常不寻常的操作来禁用它,否则从地址 0 开始已经保留了一个或多个页面。因此,mmap()不会在那里分配新页面。

相关内容

  • 没有找到相关文章

最新更新