首页 > 其他分享 >野指针得生成、危害、清除

野指针得生成、危害、清除

时间:2023-06-03 09:33:10浏览次数:40  
标签:危害 函数 指向 清除 程序 空间 NULL 指针

1、野指针得概念::指针指向的位置不可知的(随机、不正确、没有明确限制的)

2、野指针生成的三种情况

  1、指针未定义,就进行*p相关操作

  2、指针越界访问,知道指向哪,但不是有效值

  3、指针指向的空间释放(函数的变量作用范围在函数内,返回函数内定义的指针到主函数是无效的,已经被释放了)

3、野指针的危害

  1、指向不可访问的地址 (段错误)

  2、指向一个可用的,但是没有明确意义的空间(程序可以继续运行,掩盖程序上的错误)

  3、指向一个可用的而且正在被使用的空间(对空间内容进行修改,会对程序的运行造成影响,因为变量不是我们想使用的那个值,通常这样程序会被崩溃或者数据被损坏)

4、如何规避野指针

  1、指针初始化(如果没有就初始化为NULL)

  2、小心指针越界

  3、指针指向空间释放即置为NULL

  4、指针使用之前检查有效性(例如:判断是否为NULL)

 

标签:危害,函数,指向,清除,程序,空间,NULL,指针
From: https://www.cnblogs.com/gunancheng/p/17453309.html

相关文章

  • 函数返回值与指向对象的指针和引用
    定义一个指向对象的指针或则引用不会调用构造函数和析构函数。首先,强调一点,和函数传参一样,函数返回时也会做一个拷贝。从某种角度上看,和传参一样,也分为三种:(1)返回值:返回任意类型的数据类型,会将返回数据做一个拷贝(副本)赋值给变量(return语句后边的变量会生成一个副本给一个临......
  • 双指针|三数之和
    ......
  • C语言——指针
    指针的优点:使程序更简洁、紧凑、高效有效的表达更复杂的数据结构动态分配内存得到多于一个数的函数返回值1.指针的基本用法1.1指针的概念内存地址:内存中每个字节单位都有一个编号(一般用十六进制表示)指针:指针就是内存地址指针变量:用于存放地址的变量就叫做指针变量指针变量画图展......
  • C++面试八股文:C++中指针、引用、解引用和取地址有什么不同?
    某日小二参加XXX科技公司的C++工程师开发岗位2面:面试官:指针、引用、解引用和取地址是C++中的重要概念,请问它们在语法和语义上有所不同?小二:指针是一个变量,它存储了一个内存地址。小二:引用是一个别名,它允许使用一个变量的多个名称来访问同一个内存位置。小二:解引用是指使用*运......
  • 二级指针内存模型
    二级指针做输出模型#define_CRT_SECURE_NO_WARNINGS#include<stdlib.h>#include<string.h>#include<stdio.h>//指针做输出:被调用函数分配内存-----OK//指针做输入:主调用函数分配内存//求文件中的两段话的长度intgetMem(char**myp1,int*mylen1,char**myp2,in......
  • 二级指针与const
    二维数组分配:#include<iostream>intmain(){introws=3;intcols=4;//使用二级指针创建一个动态分配的二维数组int**array=newint*[rows];for(inti=0;i<rows;i++){array[i]=newint[cols];}//给数组赋值intcount=0;......
  • 双指针算法模板和一些题目
    什么是同向双指针?什么是相向双指针?双指针的鼻祖题——两数之和TwoSum链表上的快慢指针算法快速排序&归并排序 同向双指针•相向双指针•几乎所有TwoSum变种•Partition•QuickSelect•分成两个部分•分成三个部分•一些你没听过的(但是面试会考的)......
  • C++指针需要知道的小细节
    一、定义和赋值一个普通对象intival=1024;如上述代码所示,将ival定义为一个int对象,并给予初始值1024。二、指针对象的声明int*pi;1、如上述代码所示,当定义/声明某个特定类型的指针时,要在类型名称后加一个*号。2、在这里,pi是int类型对象的指针。三、指针的初始值int*......
  • 多线程或监听器@Autowired注入null空指针
    //问题:在多线程中使用@Autowired注入IUserService时,userService使用时为null,获取不到bean//原因:newthread不在spring容器中,也就无法获得spring中的bean对象;@AutowiredprivateIUserServiceuserService;//解决:手动获取bean对象privateIUserServiceuserService=AppCo......
  • C/C++杂记:深入理解数据成员指针、函数成员指针
    1.数据成员指针对于普通指针变量来说,其值是它所指向的地址,0表示空指针。而对于数据成员指针变量来说,其值是数据成员所在地址相对于对象起始地址的偏移值,空指针用-1表示。例:代码示例:structX{inta;intb;};#defineVALUE_OF_PTR(p)(*(long*)&p)int......