鱼C论坛

 找回密码
 立即注册
查看: 2633|回复: 4

字典元素赋值出错,求分析

[复制链接]
发表于 2014-10-14 13:37:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序中定义了两个字典如下:
TerData = {0x10:[0x80, 0x00, 0x00]}
BkTerData = {0x10:[0x80, 0x00, 0x00]}其中BkTerData 是为了备份TerData中的数据,以便在需要的时候恢复用的。好,下面是程序中出现的问题:
下面的这条语句:
TerData[0x10][0] = 0x40
本来是为了改变TerData中的数据,但是通过Debug调试发现,实际情况是连BkTerData 中的数据也被修改了!!!
也就是说,上面的一条语句完成了下面这两条语句的功能:
TerData[0x10][0] = 0x40
BkTerData[0x10][0] = 0x40
问题就是出在上面红色的这条赋值语句,一条语句改变了两个变量的值。
通过调试发现,该语句前后TerData和BkTerData的地址不同,可以排除变量重名的问题;
这个问题不是随机出现的,每次都可以重现;

按道理说上面的赋值语句不会有问题,但现在出了这种问题,麻烦大神给分析分析,有什么可能的意外情况,会导致出现这种错误。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-10-14 17:32:01 | 显示全部楼层
两个字典公用一个内存,名字不同。我纯属新手不知这样理解对不对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-14 19:02:07 | 显示全部楼层
本帖最后由 wei_Y 于 2014-10-14 19:08 编辑

360截图20141014190245356.jpg
  1. TerData = {0x10:[0x80, 0x00, 0x00]}
  2. BkTerData = {0x10:[0x80, 0x00, 0x00]}
复制代码

3.4.1,32位版本。
不过要是这样。
  1. TerData = {0x10:[0x80, 0x00, 0x00]}
  2. BkTerData = TerData.copy()
复制代码
就会出现这样。
360截图20141014190656037.jpg


360截图20141014191009355.jpg

地址也不是一个。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2014-11-1 07:57:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-30 00:27:31 | 显示全部楼层
没看明白。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 17:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表