我正在使用一个存在一些内存问题的C库。我已经确定有时它会过早地减少引用计数,导致段错误,并设法通过保持对象列表来扩大引用计数来解决这个问题。另一方面,我还确定了引用计数过高的特定情况。有没有办法解决这些情况,从Python代码,有目的地减少引用计数?
我知道这是hackish,绝不是干净的代码或任何东西,但我必须以某种方式处理有缺陷的C库,而且似乎这可能比找出C代码中的问题更容易(幸运的是它是开源的,修复它,然后在我必须支持的所有平台上重新编译它。
答案 0 :(得分:8)
通过ctypes使用Py_DecRef:
import ctypes
_decref = ctypes.pythonapi.Py_DecRef
_decref.argtypes = [ctypes.py_object]
_decref.restype = None
_decref(a_python_object)