4

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

在蟒蛇中:

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

在 C++ 中:

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

我在这里错过了什么,所以它会引入内存泄漏吗?

4

1 回答 1

1

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

例如,参见文档的这一部分:

请注意,提供给调用者的任何 Python 对象引用都是借用的引用;不要减少他们的引用计数!

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

于 2012-12-05T18:17:19.543 回答