Run-Time Check Failure #2 - Stack around the variable 'temp' was corrupted.错误的产生和分析

本文记录了在编写HEVC数据解析小程序过程中遇到的fscanf函数使用误区,详细解释了当读取的数据类型为unsigned char时,内存写入的问题及解决办法。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印


今天在写分析HEVC数据的小程序,编译正常,运行时产生了如下错误:


大意就是变量temp周围的内存被污染了,冲内存了。

其中temp是我定义的一个变量,类型为unsigned char,我用fscanf函数从文件中读取了一个数值(范围在0~255之间)。

       fscanf(iRe,"%02x",&temp);

反复调试后,才明白了原因,原来在调用fscanf时,以temp地址为首的32bit都会被写,只有低8bit有效(等于读入的数),其他24bit为0,。

这样的话,这24bit数据就被改写了。

将temp的类型改为int后,该错误就消失了。


开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值