首页 > 其他分享 >野指针与空指针

野指针与空指针

时间:2023-07-12 20:34:12浏览次数:37  
标签:存在 指向 地方 访问 内存 指针

一、野指针与空指针要注意

(1)野指针

野指针是一个指向未知(undefine)的 , 不确定地方的指针.

"未知的,不确定的" , 指向的地方可能存在,可能不存在.

可能可以访问,也可能不可以访问.

对野指针的访问,会有后果?

可能可以访问,可能不可以访问(导致非法的内存访问).

非法的内存访问

不存在的地方,你去访问

存在但不能写,你去写

存在但不能读,你去读

后果 : 非法的内存访问,会导致 "segmentation fault段错误" , 系统把你的进程给kill掉.

1. int *p;
	//定义了一个指针变量p , 你没有赋初始值,不代表p没有值,相反p一定会有一个值.
	//意思是p一定会指向一个地方,但是这个值是多少,指向哪里,
	//你是不知道的  undefine(未知的,未定义的)

(2)空指针

空指针是一个指向空(不存在的地方,NULL)的指针.

空指针不是野指针,因为空指针指向了一个 确定的地方(尽管这个地方不存在).

对空指针的访问,一定会导致 "非法的内存访问(段错误)"

int *p = NULL;//p 是空指针

*p  //用*p 就会出现段错误.

注意

不能对野指针进行操作, 这种行为是很危险. 宁可使用空指针,也不可使用野指针.

在定义指针的时候,可以让指针指向空的地方.

标签:存在,指向,地方,访问,内存,指针
From: https://www.cnblogs.com/lzzcforever/p/17548758.html

相关文章

  • 数据结构与算法 #18 下跳棋,极富想象力的同向双指针模拟
    ⭐️本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和[BaguTreePro]知识星球提问。学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭将基于Java/Kotlin语言,为你分享常......
  • 指针函数与函数指针
    1.指针函数先看下面的函数声明,注意,此函数有返回值,返回值为int*,即返回值是指针类型的。1.int*f(inta,intb);上面的函数声明又可以写成如下形式:int*f(inta,intb);让指针标志*与int紧贴在一起,而与函数名f间隔开,这样看起来就明了些了,f是函数名,返回值类型是一个i......
  • 106.你什么情况用指针当参数,什么时候用引用,为什么?
    106.你什么情况用指针当参数,什么时候用引用,为什么?1.使用引用参数的主要原因有两个1.程序员能修改调用函数中的数据对象2.通过传递引用而不是整个数据–对象,可以提高程序的运行速度2.一般的原则1.对于使用引用的值而不做修改的函数:(1)如果数据对象很小,如内置数据类型或者小型结......
  • 74.指针加减计算要注意什么?
    74.指针加减计算要注意什么?指针加减本质是对其所指地址的移动,移动的步长跟指针的类型是有关系的,因此在涉及到指针加减运算需要十分小心,加多或者减多都会导致指针指向一块未知的内存地址,如果再进行操作就会很危险。举个例子:#include<iostream>usingnamespacestd;intmain(......
  • 80.继承机制中对象之间如何转换?指针和引用之间如何转换?
    80.继承机制中对象之间如何转换?指针和引用之间如何转换?1.向上类型转换将派生类指针或引用转换为基类的指针或引用被称为向上类型转换,向上类型转换会自动进行,而且向上类型转换是安全的。2.向下类型转换将基类指针或引用转换为派生类指针或引用被称为向下类型转换,向下类型转换不......
  • 77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?
    77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?1.指针参数传递本质上是值传递,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身)。值传......
  • 82.函数指针?
    82.函数指针?  函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型。函数的类型由它的返回类型和形参类型共同决定,与函数名无关。例如://比较两个string对象的长度boollengthCompare(conststring&,conststring&);  该函数的类型是bool(conststri......
  • java级联调用的空指针问题
    Java中的空指针异常(NullPointerException)通常是由于在一个对象引用上调用了空引用的方法或访问了空引用上的实例变量而引起的。当你尝试使用一个空引用时,就会抛出空指针异常。一个常见的情况是在级联调用中出现空指针异常。级联调用是指对一个对象的多个方法调用进行链式操作。例如......
  • Cesium导航指针放大缩小定位平移详解
    一、需求分析点击按钮可以对地图进行放大缩小,点击重置可以返回原先初始地点,点击指针球可以移动切换不同视角。二、代码实现我的版本为Cesium1.69 cesium-navigation-es61.1.6 源码有BUG需要更改安装命令:npm cesium-navigation-es6或者yarnadd npmi cesium-navigation......
  • 双指针思想
    介绍双指针是一种思想,一种技巧或一种方法,并不是什么特别具体的算法,在二分查找等算法中经常用到这个技巧。具体就是用两个变量动态存储两个或多个结点,来方便我们进行一些操作。通常用在线性的数据结构中,比如链表和数组,有时候也会用在图算法中。在我们遇到像数组,链表这类数据结构......