使用 C 扩展 python 时发现内存泄漏
Posted
技术标签:
【中文标题】使用 C 扩展 python 时发现内存泄漏【英文标题】:Find memory leaks when extending python with C 【发布时间】:2015-01-12 16:39:03 【问题描述】:我写了一些 C 代码来创建一个 python 模块。我自己编写了代码(没有使用 SWIG 等)。如果您有兴趣,C 代码位于this 线程的底部。
问:有什么方法可以(希望很容易)找到我的 C 代码是否存在内存泄漏?有什么方法可以利用 python 的强大功能在其扩展中发现内存泄漏?
【问题讨论】:
如果在 Linux 上 -> valgrindsys.getrefcount(some_object)
有助于快速进行健全性检查(例如,确保您不会意外地意外增加输入对象的引用计数)——但它不能替代像 valgrind 这样的泄漏检测工具。
已回答的类似问题。 ***.com/questions/3982036/…
【参考方案1】:
如果您使用 linux 环境,我们可以使用名为 valgrind 的调试器轻松找到内存泄漏。 要首先获取 valgrind,您必须使用命令从 Internet 安装它
sudo apt-get valgrind
安装完成后,使用此调试器编译您的 c 代码,您可以轻松找到内存泄漏。此调试器显示内存泄漏的原因,并指定发生泄漏的行。
【讨论】:
以上是关于使用 C 扩展 python 时发现内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章