假设我们有以下代码片段
int* p = new int[5];
我们的代码在保护模式下运行。因此,位于我们p
变量中的地址不是物理地址,而只是为我们的应用程序分配的部分虚拟内存的地址。当然,我们的系统还受到保护,免受内存违规尝试的影响。
在这些情况下,是否有可能给我们一个“零”地址,这样我们就会有p = 0
并且它是正确的?当然,我考虑到 value0
被视为 a nullptr
,所以如果这个地址是正确的,它可能会产生误导。
事实上,是否有任何规则告诉我们什么是合法的可寻址范围?
当然,没有给出这个值还有另一个原因,但我不知道我是否正确 - 在 C (C++) 中,零值的指针被以特殊方式处理,所以如果我们的指针会注意到差异指向分配的内存,或者它的值为零,因为它是nullptr
?