空指针:
1.概念:指向内存中起始编号为0的空间的指针变量
(注:空指针指向的内存是不可以访问的)
int *p = NULL;
*p = 100; //空指针p解引用会导致运行时程序出错,原因就是
// 访问空指针p的操作是非法的
上述代码段中定义了一个指针p并将其指向内存中编号为0的一片地址空间,也就意味着指针p为空指针。那么访问其指向内存中的数据的操作就是非法的,原因在于0 ~ 255之间的内存编号是系统占用的,因此不可以访问。上述解引用的操作在编译时是没有问题的,但是在运行时会出错。
2.用途:初始化指针变量 (当我们定义的一个指针变量暂时不知道要指向哪一片内存空间时,可以先把它指向内存编号为0的空间)
野指针:
1.概念:指针变量指向非法的内存空间
实例如下:
//指针变量p指向内存地址编号为0x1111的空间
int *p = (int*)0x1111;
//访问野指针报错
cout<<*p<<endl;
上述代码中指针变量p指向了内存中地址编号为0x1111的空间,看似没有什么问题,但是这一块地址空间我们并没有申请,相当于让指针变量p随便的指向了内存中的一片空间,这片空间中存的是哪个变量我们一概不知,所以没有权限去访问它,这块地址对我们来说属于非法的空间,所以在访问野指针时程序会出出错。
本文探讨了空指针和野指针的概念,它们的区别,以及为何访问这些未初始化或非法内存空间会导致运行时错误。重点介绍了如何正确初始化指针和避免内存访问问题。
905

被折叠的 条评论
为什么被折叠?



