9.野指针和悬空指针详解-灵析社区

菜鸟码转

  • 悬空指针:

若指针指向一块内存空间,当这块内存空间被释放后,该指针依然指向这块内存空间,此时,称该指针为“悬空指针”。如果对悬空指针再次释放可能会出现不可预估的错误,比如可能该段内存被别的程序申请使用了,而此时对该段内存进行释放可能会产生不可预估的后果。

举例:

C++

void *p = malloc(size);
free(p); // 此时,p 指向的内存空间已释放, p 就是悬空指针。
p = NULL;
  • 野指针:

“野指针” 是指不确定其指向的指针,未初始化的指针为“野指针”,未初始化的指针的初始值可能是随机的,如果使用未初始化的指针可能会导致段错误,从而程序会崩溃。

C++

void *p; 
// 此时 p 是“野指针”。
  • 如何避免野指针:

指针在定义时即初始化,指针在释放完成后,需要将其置为空。

阅读量:2026

点赞量:0

收藏量:0