首页 > 其他分享 >失去控制“野指针”

失去控制“野指针”

时间:2023-03-20 14:34:23浏览次数:30  
标签:控制 指向 初始化 int 失去 越界 随机 指针

失去控制“野指针”_野指针

今日份学习“野指针”

本文简介:

介绍野指针,什么情况会生产野指针,我们该如何避免野指针问题。

一,定义

野指针:是指针指向的位置是不可知的,随机的,不正确的,没有明确限制的。

我们在main函数内部创建了一个指针变量但没有赋值,则它会被赋为随机值,随机指向一块内存空间,且这块空间我们并未开辟的话,如果调用了这个指针则会造成越界非法访问,且如果这块空间开辟了的话,如果在不知情下调用了这个指针则会对该空间的数据发生改变,以至于出现程序的BUG。这是我们需要特别注意的情况。

二,野指针成因

1,指针为初始化:

int a;//局部变量不初始化默认为随机值
int*p;//局部的指针变量不初始化被默认随机值“野指针”

2.指针的越界访问:

int arr[10]={0};
int*p=arr;
for(int i=0;i<=11;i++)//该循环造成了指针的越界,从而产生野指针
p++;

3.指针指向的空间被释放了

int* teat()
{
int a=0;
return &a;//返回变量a的地址
}
int main()
{
int*p=test();//接收test函数开辟a变量的地址。
*p=20;//将这块空间的数据改为20
//当该函数返回a的地址后,且该函数便被销毁了,而a的生命周期便也不存在了
//而指针p指向的这块空间则被释放了,从而导致p成为了一个野指针
return 0;
}
三,如何规避野指针

1,指针初始化,当不知道给一个指针变量赋予什么值时,可以赋“NULL”为空指针

2.小心指针越界,避免在循环代码中出现了越界访问的情况

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

4.指针使用之前检查有效性

结束语:

该篇文章总的来说,我们使用指针的时候一定要想好它的控制范围,避免造成越界访问等等...成为野指针,暂时不需要控制的指针可及时置为空指针“NULL”

标签:控制,指向,初始化,int,失去,越界,随机,指针
From: https://blog.51cto.com/u_15993084/6132752

相关文章

  • 视频直播源码,js控制滚动条位置
    视频直播源码,js控制滚动条位置今天遇到一个问题,scrollTop定位滚动条位置时不生效,查找问题发现在给元素设置滚动属性后,直接设置了该元素滚动条的位置,导致该元素没有子元素......
  • 自主移动机器人AMR控制器设计与试验(一)
    近年来,随着社会和技术发展,自主移动已经成为了仓储物流[1]、无人驾驶[2]、快递配送[3]等众多领域中机器人需要具备的一项重要能力,同时也对其长期鲁棒性提出......
  • 基于ARM+FPGA的移动机器人控制器设计
    XM-AMR-5728系列控制器是为移动机器人(AMR、智能叉车等)设计的通用控制器,为移动机器人提供地图构建、定位导航、模型编辑等核心功能。本产品将移动机器人的核心组件集成于一......
  • 基于ZYNQ7020 ARM+FPGA的运动控制器设计方案
    ZYNQ7020系列运动控制器,支持6轴脉冲+16/32轴总线控制,本地36输入,24输出,RS232/485和TCP通讯。ZYNQ7020系列:1.本地脉冲轴数:6轴带编码器反馈,编码器输入最高频率:4MHz2.最大脉......
  • 玻璃抛光总线控制方案设计
    2.5D玻璃已广泛应用于手机盖板、车内显示屏、智能手表显示屏等产品,在对它的加工中,一般可通过数控扫光机对其四周的直立面进行扫光,提高透明度和质感。信迈密切关注玻璃加......
  • Qt5.12实战之QByteArray与字符指针及字符串转换
    示例源码:#include<QCoreApplication>#include<QDebug>#include<QTextStream>staticQTextStreamcout(stdout,QIODevice::WriteOnly);#include<iostream>#include......
  • 【CSAPP】异常控制流 | 异常表 | 异常类别 | 同步异常 | 异步异常
      ......
  • 双指针算法
    一、常见类型(1)对于一个序列,用两个指针维护一段区间(如:快排) (2)对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作(如:归并排序) 二、模板1for(i......
  • 初始指针
    指针是什么?在计算机科学中,指针(pointer)编程语言的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量......
  • 控制结构
    控制结构:顺序结构、选择结构、循环结构顺序结构:按照代码的顺序由上往下执行代码选择结构:单分支结构if(条件语句)双分支结构if(条件语句1)......