gcc: 新编译警告选项;dangling-pointer

147 篇文章 ¥59.90 ¥99.00
本文介绍了GCC的新型编译警告选项-Wdangling-pointer,用于检测悬空指针,防止因栈上对象生命周期结束导致的问题。该警告选项在不同级别下有不同的检测强度,并可以通过-Wdangling-pointer=n进行配置。文章还提到了一个相关的内核bug示例以及工作中的实际问题,强调了该警告选项在避免内存访问错误方面的价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

随着时间的前进,未知的一切都会让人感觉每时每刻都在落伍。如逆水行舟不进则退。如这个新的编译警告选项。在8.5 的版本还没有,目前最新的13.0 肯定是有。
这个选项的功用是非常好的,有用。如果可以早早的用上这个功能,也行可以避免很多此类问题的发生。

介绍-Wdangling-pointer

这里怎么翻译这个指针:或许可以翻译为悬停指针,悬挂的过时指针,过时指针。
可以携带参数n如:-Wdangling-pointer=n
这个警告选项的作用是:如果指针指向了一个栈上的自变量或者对象(automtic storage),而这个对象的生命已经结束时,就会上报这个警告。包括嵌套块里声明的局部变量,复合字符临时变量,或者其他一些未命名的临时对象。 另外还有,将这样的变量、对象地址给转义指针,也会报这样的警告。所有的优化级别都会带有这个警告选项,但是需要注意的是,上报警告的内容相对于没有优化选项的有稍许的区别。

-Wdangling-pointer=1

在级别 1 时,警告仅诊断悬空指针的无条件使用。例如:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mzhan017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值