假设我将密码以纯文本形式存储在名为passWd
字符串的变量中。当我丢弃该变量时(例如,使用del passWd
或passWd= 'new random data'
),python 如何释放它?
字符串是否存储为字节数组,这是否意味着它可以在最初存在的内存位置被覆盖,或者它是内存区域中无法修改的固定集合,因此在分配新值时会创建一个新的内存区域,而旧区域将被丢弃但不会被 null 覆盖?
我很想知道 Python 如何实现内存区域的安全性,并想了解更多,主要是因为我很好奇:)
从我目前收集到的信息来看,使用del
(或__del__
) 会导致解释器不会自动释放该变量的内存区域,这可能会导致问题,而且我不确定德尔删除值时非常麻烦。但这只是我收集到的信息,并不是黑白分明的事情 :)
答案1
答案是具体实现的。从http://docs.python.org/2/library/stdtypes.html
在 5.6 序列类型下,请注意“注释#6”,其中解释道,某些实现(例如 CPython)在内存中执行就地字符串更新,而其他实现可能将字符串视为不可变对象,当替换/更改时会在内存中定义一个新区域。