c语言写了好久了。在最近的项目中发现一个很奇怪的现象。对于int32_t 类型的数组,buf[20],用memset(&buf[0],0,20)做了初始化之后,发现再次进行数据读写的时候,还保留了上次的数据。简而言之,数据没有彻底清零。查了好久 发现自己memset用的不对。最后把程序改为memset(&buf[0],0,sizeof(int32_t)*20),这才回复正常了。感叹这几年啊!真的虚度了!居然还会犯这样的错误呢
memset 引起的程序故障
最新推荐文章于 2025-07-04 20:05:31 发布
博主用C语言开发项目时,对int32_t类型数组buf[20]用memset(&buf[0],0,20)初始化后,数据读写仍保留上次内容,未彻底清零。经排查发现是memset使用有误,将其改为memset(&buf[0],0,sizeof(int32_t)*20)后恢复正常。
1万+

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



