\chapter{Reference Counting \label{countingRefs}}


The macros in this section are used for managing reference counts
of Python objects.


\begin{cfuncdesc}{void}{Py_INCREF}{PyObject *o}
  Increment the reference count for object \var{o}.  The object must
  not be \NULL; if you aren't sure that it isn't \NULL, use
  \cfunction{Py_XINCREF()}.
\end{cfuncdesc}

\begin{cfuncdesc}{void}{Py_XINCREF}{PyObject *o}
  Increment the reference count for object \var{o}.  The object may be
  \NULL, in which case the macro has no effect.
\end{cfuncdesc}

\begin{cfuncdesc}{void}{Py_DECREF}{PyObject *o}
  Decrement the reference count for object \var{o}.  The object must
  not be \NULL; if you aren't sure that it isn't \NULL, use
  \cfunction{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 \method{__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
  \cfunction{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
  \cfunction{Py_DECREF()} for the temporary variable.}
\end{cfuncdesc}

\begin{cfuncdesc}{void}{Py_XDECREF}{PyObject *o}
  Decrement the reference count for object \var{o}.  The object may be
  \NULL, in which case the macro has no effect; otherwise the effect
  is the same as for \cfunction{Py_DECREF()}, and the same warning
  applies.
\end{cfuncdesc}

The following functions or macros are only for use within the
interpreter core: \cfunction{_Py_Dealloc()},
\cfunction{_Py_ForgetReference()}, \cfunction{_Py_NewReference()}, as
well as the global variable \cdata{_Py_RefTotal}.
