Stavo seguendo il tutorial per definire 'nuovi tipi' in python, https://docs.python.org/2/extending/newtypes.html, e non ho capito lo scopo dell'utilizzo di Py_DECREF in questa parte di codice.Qual è lo scopo di Py_DECREF e PY_INCREF?
static PyObject *
Noddy_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
Noddy *self;
self = (Noddy *)type->tp_alloc(type, 0);
if (self != NULL) {
self->first = PyString_FromString("");
if (self->first == NULL)
{
Py_DECREF(self);
return NULL;
}
self->last = PyString_FromString("");
if (self->last == NULL)
{
Py_DECREF(self);
return NULL;
}
self->number = 0;
}
return (PyObject *)self;
}
La mia comprensione del conteggio dei riferimenti è irregolare e qualsiasi aiuto sarebbe apprezzato.
Non vedo come questo codice possa confondere. Hai appena creato un oggetto ('self'), e' Py_DECREF' è chiamato per deallocarlo nel caso in cui qualcosa sia andato via durante la creazione delle stringhe ... cosa non è chiaro a riguardo? – Bakuriu