首页 > 其他分享 >关于野指针的形成原因以及处理方法

关于野指针的形成原因以及处理方法

时间:2023-06-03 11:33:48浏览次数:27  
标签:初始化 arr 指向 处理 int 关于 NULL 指针

野指针:指针指向的位置是      不可知的 ,    随机的,   不正确的,     没有明确限制的。     野指针形成原因:           1,指针未初始化(例 int* p;)           2,指针越界访问 (当指针指向的范围超出arr的范围时,p就是野指针)                arr[10]={0};                int* p=arr;                for(i=0;i<15;i++)                 {*(p++)=i;}           3.指针指向的空间释放               释放并不是把该空间里所存放的数据全部清空置零,而是把该空间还给操作系统了,也就是说该空间已经不是你所拥有的了。   如何避免野指针?             1,指针初始化;              2,小心指针越界;              3,使用完指针后(释放空间后)及时将指针置零(赋值NULL)              4,指针使用之前检查其有效性;   ps: 空指针     如果给指针初始化时候把NULL赋值给指针,那么这个指针就会变成空指针,     注意!!!!此时如果想打印出空指针,结果为0x00000000,但是!!!!!这里的空指针表示的是不指向任何有效空间,而不是表示指向0x00000000,所以此时对空指针解引用操作时系统  会报错,此时访问空间就无意义了!!!

标签:初始化,arr,指向,处理,int,关于,NULL,指针
From: https://www.cnblogs.com/rabbitandtankbestmatch/p/17453708.html

相关文章

  • 关于int**在malloc为二维数组分配空间时候的作用见解
    关于int**在用malloc函数为二维数组分配空间时候int**  二级指针类型二维数组的数组名为行指针,写成 arr =(char**)malloc(n*sizeof(char))时,arr并不是二维数组的数组名,而是指针数组的数组名,指针数组的数组名是二级指针,所以可以用int**把malloc分配的空间强制转换成二级指针类......
  • MySQL同一字段取反处理
    在改BUG中遇到了这个问题一张表的字段比如是否可用标志取值取反了本来是0的写成了1 1写成了0可使用下面的语句 UPDATE(表名)SET字段名= CASE字段名WHEN (值) THEN(值)WHEN (值) THEN(值)WHEN (值) THEN(值)ENDWHERE(条件)举个例子:UPDA......
  • 关于MySQL数据库的外键作用及如何创建?
    一、外键的作用:外键的主要作用是保证数据的一致性和完整性,并且减少数据冗余。主要体现在以下两个方面:1、阻止执行从表插入新行,其外键值不是主表的主键值便阻止插入。从表修改外键值,新值不是主表的主键值便阻止修改。主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除......
  • 野指针得生成、危害、清除
    1、野指针得概念::指针指向的位置不可知的(随机、不正确、没有明确限制的)2、野指针生成的三种情况1、指针未定义,就进行*p相关操作2、指针越界访问,知道指向哪,但不是有效值3、指针指向的空间释放(函数的变量作用范围在函数内,返回函数内定义的指针到主函数是无效的,已经被......
  • Vue——属性指令、style和class、条件渲染、列表渲染、事件处理、数据双向绑定、过滤
    vm对象<body><divid="app"><h1>{{name}}</h1><button@click="handleClick">点我</button></div></body><script>//1写在data或method中的属性或方法,从vm中直接可以点出来//2method的函数中,如......
  • NLP自然语言处理—主题模型LDA案例:挖掘人民网留言板文本数据|附代码数据
    全文链接:http://tecdat.cn/?p=2155最近我们被客户要求撰写关于NLP自然语言处理的研究报告,包括一些图形和统计输出。随着网民规模的不断扩大,互联网不仅是传统媒体和生活方式的补充,也是民意凸显的地带。领导干部参与网络问政的制度化正在成为一种发展趋势,这种趋势与互联网发展的时......
  • git一些小经验(2)----关于git的地址
    git地址有两种格式,如下所示:https://github.com/username/repository.git;[email protected]:username/my-ime.git前者协议是https的,需要提供用户名和密码;后者是ssh协议,需要配置密钥.在gitee网站上,克隆或者下载仓库时,可以看到这两种协议的地址:......
  • 3、Ansible高级功能--loop、until循环,with_lines逐行处理,条件判断when等
    ansible的高级功能1、loop循环迭代:当有需要重复性执行的任务时,可以使用迭代机制范例:初始化安装软件包----hosts:webserversremote_user:roottasks-name:installsomepackagesyum:name={{item}}state=presentwith_items:......
  • C标准库中srand()和rand()关于随机数的记录
    首先需要说明,C标准库可以在C++中使用。srand()和rand()均来源于<cstdlib>中。因为这两个函数只能生成相对随机的伪随机数(有规律的随机数),这种不能直接实现“绝对随机”的函数一开始会给大家带来一些疑惑。下面记录了一些关于srand()和rand()的使用方法,以及如何实现伪随机数的“绝......
  • 处理 Ionic 5 中的重大变化:删除了Events,如何在ionic 5+版本中实现自定义Events用于旧
    您是否将您的Ionic应用程序升级到v5,而您的应用程序正在使用Events,它不再工作?如果上述情况属实,那么您来对地方了。先讲个小故事——几天前,我看到一条来自离子团队的推文,Ionic5已发布,在看到该推文10分钟后,我仅使用两个命令将我们的一个中型生产应用程序升级到Ionic5和A......