【问题标题】:How to get reference count of a PyObject?如何获取 PyObject 的引用计数?
【发布时间】:2014-11-25 21:15:28
【问题描述】:

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

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

我需要它来进行调试。

【问题讨论】:

    标签: python c++ c python-c-api python-internals


    【解决方案1】:

    每个对象的引用计数都存储在PyObject 本身的一个名为ob_refcnt 的变量中。您可以直接访问它。

    typedef struct _object {
        _PyObject_HEAD_EXTRA
        Py_ssize_t ob_refcnt;          # Reference count
        struct _typeobject *ob_type;
    } PyObject;
    

    或者,您可以使用Py_REFCNT Macro

    【讨论】:

    • 我会更好地依赖宏而不是可能无法保证不会改变的内部结构成员..
    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多