我在我的C ++控制台应用程序中使用Python C API 2.7.2。关于Python C API布尔对象有一个疑问
我正在使用:
PyObject* myVariable = Py_True;
我是否需要使用Py_DECREF(myVariable)
来推导myVariable?
Python C API文档说: -
Python True对象。这个对象没有方法。它需要 就引用计数而言,就像任何其他对象一样对待。
我搜索了这些问题,但找不到明确的答案。
感谢。
答案 0 :(得分:2)
就引用计数而言,它需要像任何其他对象一样对待。
这意味着当您参考
时必须递增它{
Py_INCREF(Py_True);
PyObject* myVariable = Py_True;
并且必须在处理它时减少它。
Py_DECREF(myVariable);
}
答案 1 :(得分:0)
虽然它没有动态创建,但它必须被引用计数,因为PyObject变量可以包含任何Python对象。否则,需要检查Py_True和分散在整个Python运行时的其他特殊情况以及使用API的任何C / C ++代码。这将是混乱和容易出错。