Does Python ctypes
have a known memory leak? I am working on a Python script having code like the below snippet, using ctypes
, that for some reason is causing a memory leak. The "while True
" in this example is to test for the leak caused by calling the function. It is being run on Windows with Python 2.5.4:
import ctypes
def hi():
class c1(ctypes.Structure):
_fields_=[( f1 ,ctypes.c_uint8)]
class c2(ctypes.Structure):
_fields_=[( g1 ,c1*2)]
while True:
test=hi()
泄漏可以使用处理程序Explorer进行检测,因为它保持了 lo,保持了越来越多的记忆。 似乎需要两个结构子类,其中一个类别有另一个类别中的“多层”(使用<代码>*的操作员),但我并不肯定这一条件是否比这一条件更为基本。 即便在路程中添加了<条码>del ,但它仍然泄露记忆。
任何关于可能产生这种情况的想法?
Edit:由于有人建议,它可能没有收集垃圾,这里是一份经过编辑的版本,它确实收集垃圾,但似乎仍然泄露记忆:
import gc
import ctypes
def hi():
class c1(ctypes.Structure):
_fields_=[( f1 ,ctypes.c_uint8)]
class c2(ctypes.Structure):
_fields_=[( g1 ,c1*2)]
while True:
test=hi()
test2=gc.collect()