当我有这样的代码时:
int* nPtr = 0;
MyClass* myClass = 0;
编译器在幕后真正做了什么。我的意思是无论如何必须在内存中有一些地方可以引用。 编译器是否有一个特殊的内存块用于空指针指向它们所引用的位置?
最佳答案
I mean anyway there must be some place in memory to refer.
没有。您不能取消引用 NULL 指针并获取对象。内存位置 0x0 * 处没有对象。
这只是一个约定,我们有一个 [无效] 指针值,我们可以使用它来将指针标识为故意不指向任何有效的地方。
* - 或者您的实现决定用于 0 指针的任何内容
关于c++ - 编译器如何处理空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522159/