这代码量产了50W的设备

今天有朋友给我发微信,说他们的供应商遇到一个问题,问题比较棘手,供应商的老板在群里让他们原厂开发帮忙一起分析,然后领导就派他就到现场去。

去的时候看了他们的代码,瞬间觉得有点不可思议,因为厂商竟然用这样的代码生产了几十万台设备。

┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┅

我把代码简化了下发出来

下午的时候,我同事过来找我,我把这代码发给我同事看了下,我同事觉得这不是致命的问题,大不了打印出来的地址是异常乱码。

踩内存的严重在于踩,也就是你侵犯了一个不应该属于你的领土,这时候就会发生问题,并且很多时候会致命不可恢复的,但是如果你只是读一个不属于你的内存信息,那不会有问题。

返回栈内存是一种未定义行为,如果返回栈内存后马上使用,这个时候栈内存还没有被覆盖,是有可能拿到正确的值的,特别是在嵌入式设备中,很多嵌入式设备跑的是裸机代码,这种程序跑起来要多正常就多正常。

下面是一小段测试代码

如果代码中没有用addr 接收数组地址,执行结果会不一样

但是如果在多任务系统中,栈可能很快被系统回收,这个时候是会出现问题的。

┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┅

让我匪夷所思的是,这样的代码缝缝补补运行在几十万台设备上。

发现了一个bug,可能还不敢直接正面解决掉,有可能他本来运行是正常的,你加了很多代码,把栈结构改变了,反而出现了各种问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值