3

我有一个用于 Python 的 C 扩展模块。

初始化模块时,我 malloc() 一些我只在 C 代码中使用的内存。

我想在模块被释放时释放这个内存。

Python 3 在 PyModuleDef 结构上有 m_free 成员,这正是我想要的。问题是我在 Python 2 中找不到等效的功能。

如何在 Python 2 中释放 malloc 的内存?

4

1 回答 1

1

我想没有直接的等价物,这就是在 3.0 中引入 m_free 的原因,详情请参阅pep 3121

目前,扩展模块通常初始化一次,然后永远“存活”。唯一的例外是调用 Py_Finalize() 时:然后第二次调用初始化例程。从资源管理的角度来看,这很糟糕:内存和其他资源可能会在每次调用初始化时被分配,但没有办法回收它们。因此,目前还没有办法完全释放 Python 分配的所有资源。

于 2013-12-23T11:37:55.533 回答