内存地址0x0是否可用?

Mar*_*ero 5 c++ null pointers memory-management new-operator

我想知道......如果当你做一个新的,预订开始的地址是0x0?我想这不可能,但为什么呢?是为此准备的新运营商?是第一个字节的一部分不可用吗?操作系统启动时始终保留它?

谢谢!

K-b*_*llo 10

空指针不一定解决0x0,所以潜在的架构可以选择另一个地址来表示空指针,你可以得到0x0new作为一个有效的地址.(我认为没有人这样做,顺便说一下,它会打破大量memset电话背后的逻辑,而且反正它更难实施).

无论是空指针被保留手术系统C++实现是不确定的,但平淡new绝不会返回一个空指针,不管它的地址是(抛出异常new是一个不同的野兽).那么,回答你的问题:

内存地址0x0是否可用?

也许,这取决于具体的实现/架构.