博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言中的迷途指针
阅读量:6240 次
发布时间:2019-06-22

本文共 886 字,大约阅读时间需要 2 分钟。

1240

一、何为迷途指针。

迷途指针,顾名思义就是迷路的指针,当然开个玩笑,其实也就是如果内存已经释放(如用free函数),但是指针却在继续引用原始内存,像这样的指针,我们就称为迷途指针。

有这样一小段代码,如:

int *p=(int *)malloc(sizeof(int));

free(p);

这一段代码,程序会在堆中分配一个整形长度的内存,比如这段内存的首地址是1000,那么指针变量p的值为1000,当调用函数free释放这段内存时,指针变量p的值任然是1000,虽然这段内存已被释放,但这段内存中任然可能包含原值,但此生指针p已指向的不是一个有效的对象,因为这段内存可能会被重新利用,里面的数据也是不确定的,由于大部分运行时系统不会阻止对后续的访问与修改,所以如果我们试图解引一个已释放的指针,其行为是未定义的,那么将可能引起很多问题,如:如果再次访问这段内存,其行为是不可预期的、潜在的安全隐患、段错误(内存不可访问)等等问题。

再比如:

int *p=(int *)malloc(sizeof(int));

①:*p=5;

free(p);

②:*p=10;

①那一句代码给分配的内存写入了数据,是可以的,但是在释放过会又去向释放的内存中写入数据,行为是不可预期的,虽然你向这段内存中写入了数据,但是这段内存已被释放,这段内存可以重新被利用,所以虽然写入了10,但可能会被其他利用这段内存程序改变,因此行为不可逾期。

1240

小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程

二、处理迷途指针

迷途指针引起的错误往往很难发现也难解决,我们可以用以下方式来处理迷途指针:

1、释放后设置为NULL。要是后面再次使用此指针会中指程序。注意赋值只会影响被赋值的指针。多指针的话还会有问题。

2、用第三方工具检查迷途指针。

3、自己写一个函数代替free函数。

好了今天暂时只介绍到这里,每天介绍一个小知识,有助于提高编程水平哦。

转载地址:http://pzcia.baihongyu.com/

你可能感兴趣的文章
python-字符串
查看>>
LabVIEW串口通信
查看>>
2017UGUI之slider
查看>>
python下载酷狗音乐源码
查看>>
MySQL学习----explain查看一条sql 的性能
查看>>
第零次作业
查看>>
Android + eclipse +ADT安装完全教程
查看>>
【批处理学习笔记】第七课:简单的批处理命令(6)
查看>>
leetcode 【 Subsets 】python 实现
查看>>
leetcode 【 Intersection of Two Linked Lists 】python 实现
查看>>
codeforces 767A Snacktower(模拟)
查看>>
用 Quartz 画聊天对话框背景实例
查看>>
Quartz2D简单绘制之饼状图
查看>>
你优化系统的目标是什么?
查看>>
SVN(64位)报 Failed to load JavaHL Library. 的解决方法
查看>>
基本运算符
查看>>
黄聪:WordPress 多站点建站教程(三):主站如何调用子站的文章内容、SQL语句如何写?...
查看>>
Activity的启动模式 4种launchMode Intent.FLAG_NEW_TASK 详解
查看>>
hdu 2254 奥运 **
查看>>
数据结构基础
查看>>