在Python中使用C分配的ctypes结构时自动释放内存

时间:2013-07-17 16:09:42

标签: python ctypes

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

0 个答案:

没有答案
相关问题