如何获取PyObject的引用计数?

17

如何从C++中获取PyObject的引用计数?

有函数Py_INCREFPy_DECREF可增加/减少引用计数,但我没有找到任何返回对象引用计数的函数。

我需要它来进行调试目的。

1个回答

21
每个对象的引用计数都存储在PyObject本身中,存储在一个名为ob_refcnt的变量中。您可以直接访问它。
typedef struct _object {
    _PyObject_HEAD_EXTRA
    Py_ssize_t ob_refcnt;          # Reference count
    struct _typeobject *ob_type;
} PyObject;

您可以使用Py_REFCNT


3
我更倾向于依赖宏而不是内部结构成员,因为这些成员很可能无法保证不会改变。 - Kapichu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接