The macros in this section are used for managing reference counts of Python objects.
o
. The object must
not be NULL; if you aren't sure that it isn't NULL, use
Py_XINCREF()
.
o
. The object may be
NULL, in which case the macro has no effect.
o
. The object must
not be NULL; if you aren't sure that it isn't NULL, use
Py_XDECREF()
. If the reference count reaches zero, the object's
type's deallocation function (which must not be NULL) is invoked.
Warning: The deallocation function can cause arbitrary Python
code to be invoked (e.g. when a class instance with a __del__()
method is deallocated). While exceptions in such code are not
propagated, the executed code has free access to all Python global
variables. This means that any object that is reachable from a global
variable should be in a consistent state before Py_DECREF()
is
invoked. For example, code to delete an object from a list should
copy a reference to the deleted object in a temporary variable, update
the list data structure, and then call Py_DECREF()
for the
temporary variable.
o
.The object may be
NULL, in which case the macro has no effect; otherwise the
effect is the same as for Py_DECREF()
, and the same warning
applies.
The following functions or macros are only for internal use:
_Py_Dealloc
, _Py_ForgetReference
, _Py_NewReference
,
as well as the global variable _Py_RefTotal
.
XXX Should mention Py_Malloc(), Py_Realloc(), Py_Free(), PyMem_Malloc(), PyMem_Realloc(), PyMem_Free(), PyMem_NEW(), PyMem_RESIZE(), PyMem_DEL(), PyMem_XDEL().