我有一个用于Python的C扩展模块。
当模块初始化时,我malloc()一些我只在C代码中使用的内存。
我想在释放模块时释放此内存。
Python 3 在 PyModuleDef 结构体上m_free成员,这正是我想要的。问题是我在 Python 2 中找不到等效的功能。
如何在 Python 2 中释放我的恶意内存?
我想没有直接的等价物,这就是为什么在 3.0 中引入m_free的原因,有关详细信息,请参阅pep 3121
:
目前,扩展模块通常初始化一次,然后永远"运行"。唯一的例外是调用 Py_Finalize() 时:然后第二次调用初始化例程。从资源管理的角度来看,这很糟糕:每次调用初始化时,内存和其他资源可能会被分配,但无法回收它们。因此,目前没有办法完全释放Python分配的所有资源。