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

    文章

    39

    浏览量

    9211

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    TPA6013A4SEDIFF PIN和SEMAX PIN能不能悬空

    在BTL模式下驱动扬声器时,VOLUME引脚是控制增益的唯一引脚. SEDIFF PIN和SEMAX PIN能不能悬空
    发表于 09-29 09:10

    ADS52J90EVM TX_TRIG管脚悬空能不能使用?

    请问TX_TRIG管脚悬空能不能使用?
    发表于 11-14 07:41

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

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

    电池能不能修复?

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

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

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

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

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

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

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

    谐波治理到底能不能节电

    谐波治理到底能不能节电?”这是我们做电能质量行业经常会被问到的一个问题。随着国家对节能减排项目的大力支持,有不少商业人士一拥而上加入到节能行业,想要分得节能市场的一杯羹。那么,通过谐波治理到底能不能实现节能的效果呢?
    发表于 04-23 15:50 3538次阅读

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

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

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

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

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

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

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

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

    拼接屏能不能触屏操作?

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

    直流电源到底能不能驱动交流灯泡发光?

    我在网上经常看到有网友在问直流电源到底能不能驱动交流灯泡发光?事实胜于雄辩,这次专门准备了一盒干电池,来实际演示一下,看看能不能发光。
    的头像 发表于 11-13 15:07 3586次阅读
    直流电源到底<b class='flag-5'>能不能</b>驱动交流灯泡发光?