c++ - 可以在地址 0 分配一个有效的指针吗?

标签 c++ pointers null std

在任何“主要平台”(出于这个问题的目的,我将其定义为 Windows、Mac 和 Linux)上,是否可以将有效分配的指针分配到程序地址空间中的地址 0 (因此弄乱了与 NULL 的比较?) 该标准甚至允许编译器/平台在地址 0 处进行有效分配吗?

最佳答案

C++ 标准允许这样做,但这样的指针不会与文字 0(NULL 指针常量)进行比较。

但是,主要操作系统中的用户模式应用程序永远不会有一个位于 0 的有效指针,甚至在 -65536 到 65535 范围内(以帮助检测 NULL 指针的偏移量)。

在大多数情况下,0 作为可用地址只存在于嵌入式系统中,很少出现在 PC 操作系统的内核中。但是虚拟内存系统会保留它,我听说过没有任何异常(exception)。

关于c++ - 可以在地址 0 分配一个有效的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658788/

相关文章:

javascript - 如何获取 javascript split 函数以从定界字符串中提取空值

c++ - C++17 中已弃用的 auto_ptr 的替代库/模板类

c++ - 如何检查 SSL 套接字是否关闭(异步)

c++ - 在 C++ 中准确计算斐波那契数列?

c++ - 重载运算符的返回值

c - 指向局部指针数组的全局指针

c++ - 在不知道类结构的情况下重载赋值运算符

c - 悬挂指针,free() 后值更改的原因?

C++,当我不能使用 NULL/0 时检查变量是否被初始化

linq-to-sql - LINQ 查询中没有结果给出 IF ELSE 语句中未设置对象实例的对象引用