0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

悬空指针能不能访问?

学益得智能硬件 来源:学益得智能硬件 2023-08-17 17:11 次阅读

指针被释放后,是不是就变成了空指针?这是很多刚接触指针的同学存在的误区。

我们还是写个代码看下:

char *p = (char *)malloc(sizeof(char) * 128);
定义一个指针,然后在堆空间申请一块内存,这种赋值方式就表示指针指向堆空间,画出来就是这样的。

34cbc742-3cdd-11ee-ac96-dac502259ad0.png  

内存用完之后,还得养成释放的习惯,如果不释放,那这块内存一直被占有,其他人就用不了,这就是所谓的内存泄漏。

释放内存使用函数free,参数就是这块内存的地址。
free(p);
在图上的表现就是,这块内存自由了,如果后面有其他地方要使用内存,那操作系统完全可以把这块内存再分配出去。

34fdaeba-3cdd-11ee-ac96-dac502259ad0.png  

此时,指针p没有任何的变化,它里面还是保存刚才的地址0x100,只是0x100这块内存已经被释放了,p并不是空指针,我们可以把它称作悬空指针,那悬空指针能不能访问?
char*p=(char*)malloc(sizeof(char) * 128);
free(p);
strcpy(p,"helloworld");
如果你强行去访问的话,就会出现一些未知的问题。

我们在学习的时候,写的代码通常比较少,内存使用的也不多,所以大部分情况下你去访问已经释放的内存好像也没什么问题,其实这是一个误区。

如果把它放到项目中,代码量比较大,内存使用比较多,就会导致一系列意想不到的问题。

所以正确的做法应该是,内存释放后,再加上一条语句:
p = NULL;
把p变成空指针。

虽然空指针也不能通过 * 去访问,但是空指针是可控的,有的时候加上一些判断,就能有效的防止一些意外的发生。






审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存泄漏
    +关注

    关注

    0

    文章

    38

    浏览量

    9166

原文标题:悬空指针和空指针

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言中结构体能不能相加

    C语言中,结构体能不能相加?
    的头像 发表于 12-19 17:04 684次阅读
    C语言中结构体<b class='flag-5'>能不能</b>相加

    TTL与非门如果有多余输入端能不能接地?

    TTL与非门如果有多余输入端能不能接地?为什么?TTL或非门有多余输入端能不能接Vcc或悬空
    发表于 04-28 11:00

    电池能不能修复?

    电池能不能修复? 电池修复作为一个新生事物,许多人对它不了解,也有许多人对它一知半解。那么电池到底能不能修复呢?
    发表于 11-23 10:40 987次阅读

    光耦(TLP521-4)能不能转换电压?

    光耦(TLP521-4)能不能转换电压?
    发表于 05-31 11:15 4139次阅读

    恒生电子总裁刘曙峰:一个特别重要的挑战就是能不能跟得上这个变化

    “金融科技行业的最大风险就是跟不上变化。新技术来了,技术变革了,你能不能跟得上?你能不能跟得上业务的变化?”
    的头像 发表于 08-26 17:27 3971次阅读

    新能源的车到底能不能买_新能源汽车的利与弊

     那么新能源汽车到底能不能买?内行人说出实情,后悔没有早知道
    的头像 发表于 07-30 09:59 3756次阅读

    大型辊压机轴磨损能不能现场维修?

    大型辊压机轴磨损能不能现场维修?
    发表于 06-23 15:35 1次下载

    C语言中的悬空指针和野指针是什么意思?

    提起C语言大部分开发者很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了,今天我们想跟大家讲的是指针中的两个特有名词:“悬空指针”和“野
    的头像 发表于 02-09 17:20 792次阅读

    指针能不能作为循环变量?

    指针能不能作为循环变量?
    的头像 发表于 02-16 18:11 702次阅读

    功耗分析能不能再提前亿点点?

    ‍ ‍     原文标题:功耗分析能不能再提前亿点点? 文章出处:【微信公众号:新思科技】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 04-13 22:50 247次阅读

    下周五|功耗分析能不能再提前亿点点?

    ‍ ‍     原文标题:下周五|功耗分析能不能再提前亿点点? 文章出处:【微信公众号:新思科技】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 04-14 18:35 271次阅读

    本周五|功耗分析能不能再提前亿点点?

    ‍ ‍     原文标题:本周五|功耗分析能不能再提前亿点点? 文章出处:【微信公众号:新思科技】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 04-17 21:55 239次阅读
    本周五|功耗分析<b class='flag-5'>能不能</b>再提前亿点点?

    周五开课|功耗分析能不能再提前亿点点?

    ‍ ‍     原文标题:周五开课|功耗分析能不能再提前亿点点? 文章出处:【微信公众号:新思科技】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 04-18 21:20 213次阅读
    周五开课|功耗分析<b class='flag-5'>能不能</b>再提前亿点点?

    物联网流量卡到底能不能用?

    物联网流量卡到底能不能用?
    的头像 发表于 08-28 09:40 3495次阅读
    物联网流量卡到底<b class='flag-5'>能不能</b>用?

    拼接屏能不能触屏操作?

    拼接屏能不能直接触屏操作,小编回答可以的,实际上很多客户购买拼接屏时都会提出拼接屏能不能加触摸的功能?我们回复是可以的,那是一种怎样的原理呢? 拼接屏一般是用来大屏展示,用来播放文字、图像等内容
    的头像 发表于 09-11 14:36 1113次阅读