この節のマクロはPythonオブジェクトの参照カウントを管理するために使われます。
PyObject *o) |
PyObject *o) |
PyObject *o) |
警告: (例えば__del__()メソッドをもつクラスインスタンスが メモリ解放されたときに)メモリ解放関数は任意のPythonコードを呼び出すことが できます。このようなコードでは例外は伝播しませんが、実行されたコードは すべてのPythonグローバル変数に自由にアクセスできます。 これが意味するのは、Py_DECREF()が呼び出されるより前では、 グローバル変数から到達可能などんなオブジェクトも一貫した状態に あるべきであるということです。 例えば、リストからオブジェクトを削除するコードは削除するオブジェクト への参照を一時変数にコピーし、リストデータ構造を更新し、それから 一時変数に対してPy_DECREF()を呼び出すべきです。
PyObject *o) |
PyObject *o) |
ガベージコレクション中に追跡される可能性のある変数の参照デクリメントを 行うには,このマクロを使うのがよいでしょう.
バージョン 2.4 で 新たに追加 された仕様です。
以下の関数: Py_IncRef(PyObject *o), Py_DecRef(PyObject *o). は,実行時の動的な Python 埋め込みで使われる関数です. これらの関数はそれぞれPy_XINCREF() および Py_XDECREF() をエクスポートしただけです.
以下の関数やマクロ: _Py_Dealloc(), _Py_ForgetReference(), _Py_NewReference() は,インタプリタのコアの内部においてのみ使用するためのものです。 また、グローバル変数_Py_RefTotal も同様です。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。