加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python-C界面中的内存泄漏?

发布时间:2020-12-20 13:31:58 所属栏目:Python 来源:网络整理
导读:我有一段带有 python-C接口的C代码,需要以python列表作为输入重复调用.我发现即使是虚拟过程也会导致内存泄漏: 在python中: a = [1.0]*1000for c in range(1000): dummy(a,1) 在C: static PyObject* dummy(PyObject* self,PyObject* args) { Py_RETURN_NO
我有一段带有 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;
}

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

解决方法

没有那么好,你传递给你的c方法的对象只是借来的,即你不必在返回之前减少对象的引用计数(事实上这将是一个糟糕的坏错误).

例如,参见documentation的这一部分:

Note that any Python object references which are provided to the
caller are borrowed references; do not decrement their reference
count!

你怎么决定你有内存泄漏?这很可能就是你的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读