0

我有一个 C 库,并且正在使用ctypes. 我已经ctypes.Structure为库使用的所有 C 结构定义了子类,并且我还创建了几个 Python 类,它们使用 Python 友好的接口包装这些 C 结构。(所以基本上每个 Python 结构都包含一个ctypes.Structure子类作为成员,然后有一堆对结构进行操作的方法。)结构中有相当多的(必要的)循环性,并且结构是在 C 端分配的。(我知道这让事情变得更加困难。)我希望在垃圾收集 Python 对象时释放相应 C 结构的内存(对我的包装库的客户端透明);我有释放内存的功能。我最初的方法是使用__del__用于此目的的方法,但定义__del__会干扰垃圾收集,因为结构中有循环引用。是否有另一种常用方法来管理此问题,而无需我的包装器的客户端显式释放结构?

4

0 回答 0