Python PyObject\u CallObject是否窃取对args的引用?(我需要释放内存吗?)

Python PyObject\u CallObject是否窃取对args的引用?(我需要释放内存吗?),python,c,Python,C,Python的文档也和语言一样,漂亮但缺乏效率:)- 我正在C代码中调用PyObject\u CallObject,不知道我创建的参数(PyObject*)是否需要在调用后释放,或者它们是否被Python使用 这意味着,在某些情况下,Python会使用该变量,这意味着它将为您调用Py_DECREF,随后调用Py_DECREF可能会产生未记录的结果 如果没有,我应该调用Py_DECREF,否则它会泄漏。所以问题是:我是否需要在这里释放内存?我希望调用使用args,但文档中没有任何说明。如果没有任何

Python的文档也和语言一样,漂亮但缺乏效率:)-

我正在C代码中调用
PyObject\u CallObject
,不知道我创建的参数(
PyObject*
)是否需要在调用后释放,或者它们是否被Python使用

这意味着,在某些情况下,Python会使用该变量,这意味着它将为您调用
Py_DECREF
,随后调用
Py_DECREF
可能会产生未记录的结果


如果没有,我应该调用Py_DECREF,否则它会泄漏。所以问题是:我是否需要在这里释放内存?我希望调用使用args,但文档中没有任何说明。

如果没有任何文档,我将创建一个循环并检查内存泄漏。您是否阅读了此处有关引用计数的一般信息?特别是,请阅读关于“窃取参考资料”的部分。@MarkDickinson是的,这就是我在这里提问的原因。与此相反,当调用函数传入对对象的引用时,有两种可能:函数窃取对对象的引用,或者不窃取。窃取引用意味着,当您将引用传递给函数时,该函数假定它现在拥有该引用,您不再对此负责。我需要知道我使用的函数是否窃取引用。如果有,我不需要在意,如果没有,我也不需要在意。不,
PyObject\u CallObject
不会窃取引用。正如文档中所说,很少有函数可以这样做,而且那些可以这样做的函数都被明确地记录下来。一般来说,调用方仍然拥有引用,并且必须减少引用。窃取引用的callable应该记录它们所做的事情。例如,注意到它窃取了一个引用。这有点让人困惑,也可能有风险,但我想如果99%的函数都是单向的,那么继续提及就有点乏味了。