>>p = 5
>>id(p)
140101523888800
>>p = 5.56
>>id(p)
140100617985840
我知道将新值分配给现有变量时,它指向内存中存储新值的新位置。但我的问题是,包含先前值的内存位置是否会5
仍然存在?
如果是的话,重新分配几次后不会导致内存溢出吗?
如果不指定特定的 python 版本/实现,你就不能真正问这样的问题。如果你正在谈论参考实现(CPython),你可以看看这个参考 or this one对于 python3.x。
具体来说:
重要的是要了解 Python 堆的管理是由解释器本身执行的,用户无法控制它
因此无法回答该内存位置是否仍然有效。我们可以讨论的是该对象是否会被垃圾收集器收集。由于 CPython 依赖于引用计数,因此当您为p
,原值的引用计数减一。如果该引用计数降至零,则该对象将被垃圾收集器收集。这意味着该内存位置可供其他对象使用or也许 python 会将内存返回给操作系统。作为用户,您无法控制 python 解释器将执行哪些操作(或何时执行)。
基本上,Python 解释器会处理防止内存泄漏/内存溢出等所需的所有细节。作为一名 Python 程序员,你不需要担心这些细节,就像你需要担心它们一样,如果您正在使用 C 等较低级语言进行编码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)