¿Cómo obtener el recuento de referencias de un PyObject?

1 minuto de lectura

Avatar de usuario de DLunin
DLunin

Cómo obtener el recuento de referencia de un PyObject de C++?

hay funciones Py_INCREF y Py_DECREF que lo aumentan/disminuyen, pero no he encontrado ninguna función que devuelva el recuento de referencia del objeto.

Lo necesito para fines de depuración.

El recuento de referencia de todos y cada uno de los objetos se almacena en el PyObject en sí mismo, en una variable llamada ob_refcnt. Puede acceder directamente a eso.

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

Como alternativa, puede utilizar el Py_REFCNT Macro.

  • Será mejor que confíe en la macro que en los miembros internos de la estructura que probablemente no estén garantizados para no cambiar.

    – Kapichu

    8 mayo 2017 a las 22:23

¿Ha sido útil esta solución?