今天在写分析HEVC数据的小程序,编译正常,运行时产生了如下错误:
大意就是变量temp周围的内存被污染了,冲内存了。
其中temp是我定义的一个变量,类型为unsigned char,我用fscanf函数从文件中读取了一个数值(范围在0~255之间)。
fscanf(iRe,"%02x",&temp);反复调试后,才明白了原因,原来在调用fscanf时,以temp地址为首的32bit都会被写,只有低8bit有效(等于读入的数),其他24bit为0,。
这样的话,这24bit数据就被改写了。
将temp的类型改为int后,该错误就消失了。
本文记录了在编写HEVC数据解析小程序过程中遇到的fscanf函数使用误区,详细解释了当读取的数据类型为unsigned char时,内存写入的问题及解决办法。

2337

被折叠的 条评论
为什么被折叠?



