保留的内存地址?

是否有一个保留的内存地址列表 - 用户空间程序的内存永远不能分配给的地址列表?我意识到这很可能是每个操作系统或每个架构,但我希望有人可能知道一些更常见的操作系统和拱门。我只能为几个版本的Windows挖一个:   对于Windows NT,2k和XP将是:      0x00000000 - 0x0000ffff - >最低页面受到保护以简化调试      0x00001000 - 0x7ffeffff - >应用程序的内存区域      0x7fff0000 - 0x7fffffff - >保护区域,以防止内存功能损坏以下部分      0x80000000 - 0xffffffff - >包含驱动程序等系统所在的内存 任何人都知道Linux或BSD(或其他任何事情)?     
已邀请:
Linux通常配置为由内核拥有0xC000000到0xFFFFFFFF。这可以改变(例如,臭名昭着的4GB-4GB分割,不保留)。 glibc通常加载为0xB000000。 在Linux下,特定的mmap()调用可以请求0x00000000,除非被安全sysctl阻止(结果是一个坏主意阻塞)。 Reguarding分配NULL:   NULL只能显式分配,所以我假设执行它的程序是为这样做的结果而准备的。 GCC需要至少
-fno-delete-null-pointer-checks
才能使受影响的代码正常运行。我被告知这是为了模拟在那里映射零页面的旧BSD行为。     

要回复问题请先登录注册