linux - Mac 上的 mmap 可以返回 null 吗?

标签 linux macos null posix mmap

Linux manpagePOSIX standard指定,只要未提供 MAP_FIXED 标志,mmap 就保证不会返回从地址 0 开始的内存。但是,Mac 中没有记录此类保证mmap 联机帮助页。

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

最佳答案

macOS 兼容 POSIX。事实上,它是 certified as officially UNIX-compliant ,这意味着符合 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() 不会在那里分配新页面。

关于linux - Mac 上的 mmap 可以返回 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46354422/

相关文章:

linux - 在 cat 文件的输出中打印单词 echo

linux - Gradle 停留在配置项目

php - PHP中is_null "== NULL"和 "=== NULL"的区别

objective-c - AppDelegate 在启动时最后实例化

java 文件 readline 返回 null

sql-server - Microsoft 可以将三值字段存储在一个位中吗?

java - getClass().getResource(resourcePath) 在 Windows 上有效,在 Linux 上为空

linux - 确定 Linux 上运行的是哪个版本的 Mono?

c++ - 从 CFURLRef 或 CFStringRef 转换为 std::string

java - 无法识别的虚拟机选项 'ShenandoahGCHeuristics=compact'