c++ - 编译器如何处理空指针

标签 c++

当我有这样的代码时:

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/

相关文章:

c++ - boost::带有 bool 和 string 的变体

c++ - 所有后缀的最长前缀字符串长度

c++ - 如何/可能有一个 vector<unique_ptr<ABC>>?

c++ - Windows 和 Linux 的 C++ 中 64 位整数的跨平台定义

c++ - CMake:使用 target_sources() 添加当前目录和子目录中的所有文件

c++ - Visual Studio 中的英特尔编译器未找到 boost 库

c++ - 如何实现is_STL_vector

c++ - 在 Clion : "Target not found" 中构建 C++ 程序

c++ - 水平对齐动态创建的小部件 qt c++

c++ - 将 GL_TRIANGLE_STRIP 显示为线框