Commit eeec9917 authored by Martin v. Löwis's avatar Martin v. Löwis

Patch #837322: Clarify owning, borrowing, stealing. Backported to 2.3.

parent 9508f5a3
...@@ -169,12 +169,16 @@ becomes second nature. ...@@ -169,12 +169,16 @@ becomes second nature.
\subsubsection{Reference Count Details \label{refcountDetails}} \subsubsection{Reference Count Details \label{refcountDetails}}
The reference count behavior of functions in the Python/C API is best The reference count behavior of functions in the Python/C API is best
explained in terms of \emph{ownership of references}. Note that we explained in terms of \emph{ownership of references}. Ownership
talk of owning references, never of owning objects; objects are always pertains to references, never to objects (objects are not owned: they
shared! When a function owns a reference, it has to dispose of it are always shared). "Owning a reference" means being responsible for
properly --- either by passing ownership on (usually to its caller) or calling Py_DECREF on it when the reference is no longer needed.
by calling \cfunction{Py_DECREF()} or \cfunction{Py_XDECREF()}. When Ownership can also be transferred, meaning that the code that receives
a function passes ownership of a reference on to its caller, the ownership of the reference then becomes responsible for eventually
decref'ing it by calling \cfunction{Py_DECREF()} or
\cfunction{Py_XDECREF()} when it's no longer needed --or passing on
this responsibility (usually to its caller).
When a function passes ownership of a reference on to its caller, the
caller is said to receive a \emph{new} reference. When no ownership caller is said to receive a \emph{new} reference. When no ownership
is transferred, the caller is said to \emph{borrow} the reference. is transferred, the caller is said to \emph{borrow} the reference.
Nothing needs to be done for a borrowed reference. Nothing needs to be done for a borrowed reference.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment