什么NULL指针、悬空指针、野指针

NULL 指针、悬空指针和野指针是在 C 和 C++ 等编程语言中与指针相关的概念,它们具有不同的特性和潜在风险,以下是详细介绍:

NULL 指针

  • 定义:NULL 指针是一个特殊的指针值,它表示指针不指向任何有效的内存地址。在 C 和 C++ 中,通常用宏 NULL 或 nullptr(C++11 引入)来表示空指针。
  • 作用:用于初始化指针,表明该指针在初始化阶段尚未指向任何实际的对象或内存区域。这样可以避免指针在未初始化时指向不确定的内存位置,从而引发难以调试的错误。例如:

c

int* ptr = NULL;

  • 使用场景:在函数返回值为指针时,如果函数执行失败或没有找到有效的对象,通常会返回 NULL,让调用者可以据此判断函数执行的结果。例如,在 malloc 函数分配内存失败时,它会返回 NULL

悬空指针

  • 定义:当指针所指向的内存被释放或对象被销毁后,该指针仍然保留着原来的地址值,但是这个地址所对应的内存已经不再有效,此时的指针就被称为悬空指针。
  • 产生原因:常见的情况是使用 free 或 delete 操作释放了动态分配的内存后,没有及时将指针置为