QWFaichixuegao 发表于 2023-8-22 15:48:07

求助!关于结构体数据拷贝出现不存在的字符



先贴段代码,这是一段串口发送前的拷贝
      
打断点调试watch1中可以看到所拷贝的结构体成员数组除了必要字段外是干净的,结果拷贝下来的结构体数组应该没有元素的地方多出了几个字符这可能是什么情况呢,是否是编译器的优化问题呢,之前遇到很多次这种情况(暂时用memcpy固定长度拷贝可解决),想彻底弄清楚这个问题请教一下老大还有各位坛友

eric2013 发表于 2023-8-22 16:29:58

你这个是局部变量,局部变量占用的栈空间,你没有初始化,那么他的默认值就是之前此空间被使用的随机值。而且你做个strcpy仅初始化了前面一部分数值,后面都没有被设置数值。

解决办法,可以考虑使用前memset清零下。

QWFaichixuegao 发表于 2023-8-23 09:17:49

eric2013 发表于 2023-8-22 16:29
你这个是局部变量,局部变量占用的栈空间,你没有初始化,那么他的默认值就是之前此空间被使用的随机值。而 ...

感谢老大{:34:}

glory 发表于 2023-8-23 09:53:58

在函数声明property_device变量,先初始化如下:
YourType property_device = {0};
不要显式调用memset来清零

The_One 发表于 2023-8-23 11:52:51

这样拷贝字符串变量,依然存在越界的可能,推荐使用memmove,或者memcpy, strncpy
页: [1]
查看完整版本: 求助!关于结构体数据拷贝出现不存在的字符