野指针出现的三种情况
昨天面试被问到“你了解野指针吗”,我的回答是“野指针就是没有初始化的指针,这样的指针会随机指向一块内存,野指针会对系统造成破坏(造成内存泄漏)”。面试官又问到,“为什么会有野指针这个概念?”。我只是回答了”指针没有初始化就会变成野指针“。
事实上野指针出现的情况有三种:
1、指针变量未初始化
2、指针释放之后未置空
3、返回指向栈内存的指针
我们如何避免野指针呢?做法如下:
针对野指针出现的第一种情况的解决办法:
1、定义一个指针后将其初始化为NULL。
针对野指针出现的第二种情况的解决办法:
1、使用指针时先用malloc为指针分配内存(在堆空间中分配),检查空间是否分配成功;
2、内存成功分配后对该内存空间初始化为0;
3、指针使用完后调用free()对指针指向的内存空间进行释放;
4、对使用的指针重新赋为NULL。
针对野指针出现的第三种情况的解决办法:
1、函数不要返回指向栈内存的指针。
野指针出现的三种情况相关推荐
- C/C++中野指针产生的三种情况
C/C++中野指针产生的三种情况 1.指针变量未初始化: 任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气,此时若未初始化,则产生野指针. 2.指针释放后未置空: 有时 ...
- VC++复制构造函数使用的三种情况—整理范磊VC++
1 上面不执行复制构造函数,17行将10000赋值给a:首先是进行类型转换转化为类(等价18行),然后调用构造函数创建一个临时对象, 并将该临时对象赋给a. 2. 对func函数: 接收的实参是主函数 ...
- 对象的notify方法的含义和对象锁释放的三种情况
1,notify的含义 (1)notify一次只随机通知一个线程进行唤醒 (2)在执行了notify方法之后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获得该对象锁, 要等到 ...
- SSO单点登录三种情况的实现方式详解
SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...
- 【重复提交表单】表单重复提交的三种情况,解决办法
引入 看一个重复提交表单的例子 F12可以看到,请求体中的参数在刷新页面之后仍然保留,因此每一次刷新页面,都会把现有的请求体中的表单数据提交一次到服务器,而接收的页面还是insert.jsp,于是造成 ...
- mysql002多表查询.on链接分为三种情况,左链接,右链接,全链接
-- on链接(最实用),分为三种情况,左链接,右链接,全链接 -- 左外链接,左表全部显示,如果匹配不到右表的内容使用null代替. SELECT * FROM emp e LEFT JOIN de ...
- shiro单点登录原理_SSO单点登录三种情况的实现方式详解
单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子系统--百度经验.百度知道.百度文库等 ...
- Linux系统编程16:进程控制之进程终止以及终止进程的三种情况
文章目录 (1)进程终止时的三种情况 (2)退出进程的方法 A:正常退出-exit和return的区别 B:异常退出 C:_exit()函数 (3)实践 (1)进程终止时的三种情况 一个进程结束了,无 ...
- Java输入n个无序的整数,请编写程序,找出其中最大数所在的位置.请以以下三种情况运行你的程序.以便验证你的程序是否正确.(不得少于5个数)① 最大数在最前 ② 最大数在最后 ③ 最大
代码如下: import java.util.ArrayList; import java.util.Scanner; /*输入n个无序的整数,请编写程序,找出其中最大数所在的位置.请以以下三种情况运 ...
最新文章
- SQL server 2005中无法新建作业(Job)的问题
- Leetcode 191. 位1的个数 解题思路及C++实现
- IPFS (2) 系统技术架构
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
- android view存储为jpg,Android长按imageview把图片保存到本地的实例代码
- Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用
- 【转】c#中@的3种作用
- MySQL数据库常用的操作命令(一)
- Python的文件锁使用
- @value 静态变量_C语言基本知识:变量
- Struts2之入门
- v4l2loopback -- 源码分析
- STM32 Roadshow 更新 | 生态伙伴演讲定档
- i标签和em标签的区别
- 【HR面试100问】一篇文章根治各种HR面的套路问题,文章给出参考答案~持续更新
- echart 三维可视化地图_实测三个工具后,我终于找到了地图可视化的神器
- Dockerfile构建镜像并发布镜像
- html多图自动展示,基于echarts+html+css+jq的数据可视化大屏展示炫酷看板
- Latex报错:xxxx.sty文件不存在解决方案
- 在win2000下安装mysql完全版本(转)