发现了一个bug,通过id取变量会出错

 

上述代码是在完成老师布置的哈夫曼编码作业时写的,其中在通过id取变量值的时候出现了一点点小失误,debug一下,发现通过id取变量前3轮都没有问题,在第四轮的时候不知道出现了什么问题,T1节点永远显示不出来具体的数据,而且多次debug的情况不一样,有的debug可以完整走到return,有的走到第四轮T1重新通过id取变量的时候就退出了。

初步怀疑是python的内存管理没做好,在第四轮循坏的时候,我通过id取第二轮存进字典的变量,可能内存已经被释放或者被回收,亦或者别覆盖了部分。

这个作业后来修改了一下,不用id也可以,就直接TreeNode_dict[minkey1+minkey2]=bind就行。

=======================================================================

2023/10/14日更新,这几天沉淀了一下,感觉应该是保存id的话仅仅只是保存了一个数值,变量指向改变之后,没有变量引用那块内存空间,就会被释放。但是直接保存bind变量(其实也是保存那块地址),但是系统会默认有变量引用了那块内存空间,不会自动释放。以上仅是猜测。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值