原文 https://homepea.top/2020/24.C-point/
空指针
空指针:指针指向的地址为空的指针叫空指针/NULL指针
int *p1;
p1 = NULL;
char *p2;
p2 = NULL;
野指针
当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称悬垂指针(也叫迷途指针)。C++允许未初始化的指针的存在,而这类指针即为野指针。
int a = 1;
int *p1; //这里p1没有初始化的赋值,随机只想一个地址,是野指针
p1 = &a; //指向了值
// 指针在申请的时候一定要赋值,至少要给NULL!
char *p2 = NULL;
垂悬指针
悬垂指针:指针所指向的对象已经被释放或者回收了,但是指向该对象的指针没有作任何的修改,仍旧指向已经回收的内存地址。 此类指针称为垂悬指针。
一个很常见的失误是返回一个栈分配的局部变量:一旦调用的函数返回了,分配给这些变量的空间被回收,此时它们拥有的是“垃圾值”。
int *func(void)
{
int num = 1234;
/* ... */
return #
}
调用 func 后,尝试从该指针暂时能读取到正确的值(1234),但是再次调用函数后将会重写栈为 num 分配的的值,再从该指针读取的值就不正确了。如果必须要返回一个指向 num 的指针,num 的作用域必须大于这个函数——它也许被声明为 static。
标签:p1,指向,int,num,NULL,指针 From: https://www.cnblogs.com/fuqiangblog/p/16724428.html