可以在地址0分配有效指针吗?

0x5*_*9df 4 c++ null pointers std

在任何"主要平台"(我为了这个问题而定义为Windows,Mac和Linux),可以想象一个有效分配的指针在程序地址空间中的地址0处分配(因此搞乱)与NULL进行比较?)标准是否甚至允许编译器/平台在地址0处进行有效分配?

Ben*_*igt 7

C++标准允许它,但这样的指针不会比较等于文字0(NULL指针常量).

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

在大多数情况下,0可用地址仅存在于嵌入式系统中,并且很少存在于PC操作系统的内核中.但虚拟内存系统保留了它,没有任何我曾听说过的例外情况.

  • NULL指针访问是一个很大的问题,一些小的嵌入式微存储空间0用于检测NULL指针访问,并在访问时发出硬件中断.我工作的一个硬件模拟器上有一个LED,当访问地址0时,它就出现了. (2认同)