いった、様々な動的記憶管理の側面を扱うために、個別のコンポーネントがあります。関連の全てのデータを記憶するのに十分な空きがあるかどうか確認します。素のメモリ操作関数の上には、いくつかのオブジェクト固有のメモリ操作関数があります。これらは同じヒープを操作し、各オブジェクト型固有の事情に合ったメモリ管理ポリシを実装しています。整数オブジェクトは文字列やタプル、辞書とは違ったやり方でヒープ内で管理されます。いうのも、整数には値を記憶する上で特別な要件があり、速度/容量のトレードオフが存在するからです。メモリマネジャは作業のいくつかをオブジェクト固有のメモリ操作関数に委譲しますが、これらの関数がプライベートヒープからはみ出してメモリ管理を行わないようにしています。用ヒープの管理はインタプリタ自体が行うもので、ユーザがそれを制御する余地はないと理解することです。関数群を介して行います。操作しようとしてはなりません。メモリマネージャとの間で関数呼び出しが交錯します。メモリマネージャは異なるアルゴリズムで実装されていて、異なるヒープを操作するため、呼び出しの交錯は致命的な結果を招きます。ライブラリのメモリ操作関数を使って安全にメモリを確保したり解放したりできます。ライブラリのメモリ操作関数を使っています。オブジェクトを確保する時にだけ必要です。ヒープに固定して行うよう勧めます。メモリマネジャの管理下にあるからです。書かれた新たなオブジェクト型で拡張する際には、ヒープでのメモリ管理が必要です。してほしいということがあります。メモリマネージャに委譲すれば、インタプリタはより正確なメモリフットプリントの全体像を把握できます。メモリマネージャがガベージコレクションやメモリのコンパクト化、その他何らかの予防措置といった、適切な動作をトリガできることがあります。メモリマネージャの管理から完全に外れることに注意してください。利用するメモリアロケータを制御することができます。統計情報を表示できます。以下の関数群はシステムのアロケータをラップします。保持していなくても呼び出すことができます。型のポインタを返します。ないユニークなポインタを返します。確保されたメモリーにはいかなる初期化も行われません。型のポインタを返します。確保されたメモリー領域はゼロで初期化されます。ないポインタを返します。バイトにリサイズします。古いサイズと新しいサイズの小さい方までの内容は変更されません。ゼロに等しい場合、メモリブロックはリサイズされますが解放されません。呼び出しにより返されなければなりません。前のメモリエリアをさす有効なポインタのままです。指すメモリブロックを解放します。返した値でなければなりません。呼び出した後だった場合、未定義の動作になります。ヒープに対してメモリを確保したり解放したり出来ます。保持しておく必要があります。型のポインタを返します。ないユニークなポインタを返します。確保されたメモリーにはいかなる初期化も行われません。型のポインタを返します。確保されたメモリー領域はゼロで初期化されます。ないポインタを返します。バイトにリサイズします。古いサイズと新しいサイズの小さい方までの内容は変更されません。ゼロに等しい場合、メモリブロックはリサイズされますが解放されません。呼び出しにより返されなければなりません。前のメモリエリアをさす有効なポインタのままです。指すメモリブロックを解放します。返した値でなければなりません。呼び出した後だった場合、未定義の動作になります。以下に挙げる型対象のマクロは利便性のために提供されているものです。プリプロセッサマクロです。元の値を保存してください。メモリ操作関数を直接呼び出すための以下のマクロセットが提供されています。バージョン間でのバイナリ互換性を保てず、それゆえに拡張モジュールでは撤廃されているので注意してください。ヒープに対してメモリを確保したり解放したり出来ます。保持しておく必要があります。型のポインタを返します。ないユニークなポインタを返します。確保されたメモリーにはいかなる初期化も行われません。型のポインタを返します。確保されたメモリー領域はゼロで初期化されます。ないポインタを返します。バイトにリサイズします。古いサイズと新しいサイズの小さい方までの内容は変更されません。ゼロに等しい場合、メモリブロックはリサイズされますが解放されません。呼び出しにより返されなければなりません。前のメモリエリアをさす有効なポインタのままです。指すメモリブロックを解放します。返した値でなければなりません。呼び出した後だった場合、未定義の動作になります。PyMemAllocatorDomain¶アロケータドメインを同定するための列挙型です。指定されたドメインのメモリブロックアロケータを取得します。指定されたドメインのメモリブロックアロケータを設定します。ないポインタを返さなければなりません。関数を呼び出して、新しいアロケータの上にデバッグフックを再度設置しなければなりません。PyObjectArenaAllocator¶アリーナアロケータを記述するための構造体です。*allocator)¶アリーナアロケータを取得します。*allocator)¶アリーナアロケータを設定します。res;上の二つの例では、バッファを常に同じ関数セットに属する関数で操作していることに注意してください。ファミリを使って行うことが必要です。ラベルづけをしています。よる新しいオブジェクト型の定義や実装に関する記述の中で説明します。