在任何“主要平台”(出于这个问题的目的,我将其定义为 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/