擅长:python、mysql、java
<p>这看起来是一个终生的问题。在</p>
<p>如果传递给函数的对象将被保存在某个地方,则需要通过递增引用计数器来通知Python运行时。在</p>
<p>如果不这样做,那么对象可能在第一次调用终止后被销毁,因此<code>config</code>指针实际上指向Python认为可重用的内存。在</p>
<p>您所观察到的是内存实际上已被其他对象重用(因此您可以看到内容的变化)。在</p>
<p>在cpython中,使用引用计数器管理对象生命周期(使用单独的收集算法来解决引用循环的问题)。每个对象都有一个计数器,显示有多少其他对象指向它,每次使用该计数器时都必须保持正确。在</p>
<p>如果你将一个对象传递给一个函数,而函数代码将指向该对象的指针存储在某个地方,那么它也应该增加指向对象的引用计数器。如果它未能通知对象新存储的引用,问题是对象可能会被销毁,留下一个指向未分配(或稍后重用)内存的悬空指针。在</p>
<p>相反的问题(增加引用太多)是内存泄漏,因为如果引用计数器大于零,即使没有人使用它,Python内存管理器也不会回收对象内存。在</p>
<p>请参阅<a href="http://docs.python.org/2/c-api/refcounting.html" rel="nofollow">http://docs.python.org/2/c-api/refcounting.html</a>和相关文档。在</p>