昨天面试被问到“你了解野指针吗”,我的回答是“野指针就是没有初始化的指针,这样的指针会随机指向一块内存,野指针会对系统造成破坏(造成内存泄漏)”。面试官又问到,“为什么会有野指针这个概念?”。我只是回答了”指针没有初始化就会变成野指针“。

事实上野指针出现的情况有三种:
1、指针变量未初始化
2、指针释放之后未置空
3、返回指向栈内存的指针

我们如何避免野指针呢?做法如下:
针对野指针出现的第一种情况的解决办法:
1、定义一个指针后将其初始化为NULL。

针对野指针出现的第二种情况的解决办法:
1、使用指针时先用malloc为指针分配内存(在堆空间中分配),检查空间是否分配成功;
2、内存成功分配后对该内存空间初始化为0;
3、指针使用完后调用free()对指针指向的内存空间进行释放;
4、对使用的指针重新赋为NULL。

针对野指针出现的第三种情况的解决办法:
1、函数不要返回指向栈内存的指针。

野指针出现的三种情况相关推荐

  1. C/C++中野指针产生的三种情况

    C/C++中野指针产生的三种情况 1.指针变量未初始化: 任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气,此时若未初始化,则产生野指针. 2.指针释放后未置空: 有时 ...

  2. VC++复制构造函数使用的三种情况—整理范磊VC++

    1 上面不执行复制构造函数,17行将10000赋值给a:首先是进行类型转换转化为类(等价18行),然后调用构造函数创建一个临时对象, 并将该临时对象赋给a. 2. 对func函数: 接收的实参是主函数 ...

  3. 对象的notify方法的含义和对象锁释放的三种情况

    1,notify的含义     (1)notify一次只随机通知一个线程进行唤醒 (2)在执行了notify方法之后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获得该对象锁, 要等到 ...

  4. SSO单点登录三种情况的实现方式详解

    SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...

  5. 【重复提交表单】表单重复提交的三种情况,解决办法

    引入 看一个重复提交表单的例子 F12可以看到,请求体中的参数在刷新页面之后仍然保留,因此每一次刷新页面,都会把现有的请求体中的表单数据提交一次到服务器,而接收的页面还是insert.jsp,于是造成 ...

  6. mysql002多表查询.on链接分为三种情况,左链接,右链接,全链接

    -- on链接(最实用),分为三种情况,左链接,右链接,全链接 -- 左外链接,左表全部显示,如果匹配不到右表的内容使用null代替. SELECT * FROM emp e LEFT JOIN de ...

  7. shiro单点登录原理_SSO单点登录三种情况的实现方式详解

    单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子系统--百度经验.百度知道.百度文库等 ...

  8. Linux系统编程16:进程控制之进程终止以及终止进程的三种情况

    文章目录 (1)进程终止时的三种情况 (2)退出进程的方法 A:正常退出-exit和return的区别 B:异常退出 C:_exit()函数 (3)实践 (1)进程终止时的三种情况 一个进程结束了,无 ...

  9. Java输入n个无序的整数,请编写程序,找出其中最大数所在的位置.请以以下三种情况运行你的程序.以便验证你的程序是否正确.(不得少于5个数)① 最大数在最前 ② 最大数在最后 ③ 最大

    代码如下: import java.util.ArrayList; import java.util.Scanner; /*输入n个无序的整数,请编写程序,找出其中最大数所在的位置.请以以下三种情况运 ...

最新文章

  1. SQL server 2005中无法新建作业(Job)的问题
  2. Leetcode 191. 位1的个数 解题思路及C++实现
  3. IPFS (2) 系统技术架构
  4. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
  5. android view存储为jpg,Android长按imageview把图片保存到本地的实例代码
  6. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用
  7. 【转】c#中@的3种作用
  8. MySQL数据库常用的操作命令(一)
  9. Python的文件锁使用
  10. @value 静态变量_C语言基本知识:变量
  11. Struts2之入门
  12. v4l2loopback -- 源码分析
  13. STM32 Roadshow 更新 | 生态伙伴演讲定档
  14. i标签和em标签的区别
  15. 【HR面试100问】一篇文章根治各种HR面的套路问题,文章给出参考答案~持续更新
  16. echart 三维可视化地图_实测三个工具后,我终于找到了地图可视化的神器
  17. Dockerfile构建镜像并发布镜像
  18. html多图自动展示,基于echarts+html+css+jq的数据可视化大屏展示炫酷看板
  19. Latex报错:xxxx.sty文件不存在解决方案
  20. 在win2000下安装mysql完全版本(转)

热门文章

  1. 【20160924】GOCVHelper 图像处理部分(2)
  2. 四层负载均衡——LVS
  3. 使用libvirt管理kvm(virsh篇)
  4. ASP.NET MVC 2入门演练 3 - 列表和添加功能
  5. php接受post值报错,php接收post参数时报错怎么办
  6. MySQL 无效数字_ORA-01722: 无效数字的解决方法
  7. 和plc哪个简单点_怎么看PLC梯形图
  8. QuarkXPress 2020中文版
  9. 【转】互联网公司都有哪些行业
  10. html form label标签基础语法结构与使用案例教程(转载)