【问题标题】:Memory leak in Python-C++ interface?Python-C++ 接口中的内存泄漏?
【发布时间】:2012-12-05 17:54:57
【问题描述】:

我有一段带有 python-C++ 接口的 C++ 代码,需要使用 python 列表作为其输入重复调用。我什至发现以下虚拟进程会导致内存泄漏:

在python中:

a = [1.0]*1000
for c in range(1000):
    dummy(a, 1)

在 C++ 中:

static PyObject* dummy(PyObject* self, PyObject* args) {
    Py_RETURN_NONE;
}

我是否错过了这里的任何内容,所以它会引入内存泄漏?

【问题讨论】:

  • 我不这么认为...你确定这是内存泄漏,而不仅仅是 GC 还没有运行吗?
  • 其实我尝试在代码中添加周期性手动GC,但是内存还是很快炸了。
  • 我在这里看不到 swig 链接。我错过了什么吗?

标签: c++ python memory-leaks


【解决方案1】:

不,这很好,你传递给你的 c 方法的对象只是借用的,也就是说,你不必在返回之前减少对象的引用计数(事实上,这将是一个糟糕的、糟糕的错误)。

例如看documentation的这一部分:

请注意,提供给 调用者是借用的引用;不要减少他们的参考 数一数!

你是如何确定你有内存泄漏的?这很可能是你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2019-07-16
    • 2010-12-20
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多