作成関数でのアロケータの使用
各 Core Foundation の不透明型には、1 つ以上の 作成関数、特定の方法で初期化されたその型のオブジェクトを作成して返す関数があります。すべての作成関数は、最初のパラメータとしてアロケータオブジェクト (CFAllocatorRef) への参照を取ります。また、いくつかの関数は、特殊な割り当てや割り当て解除の目的のアロケータパラメータを持つこともあります。
アロケータ参照パラメータにはいくつかのオプションがあります。
- 定数 kCFAllocatorSystemDefault を渡すことができます。これは汎用システム・アロケータ (初期のデフォルト・アロケータ) を指定します。
- NULL を渡して、現在のデフォルトアロケータ (カスタムアロケータまたは汎用システムアロケータかもしれません) を指定できます。これは、kCFAllocatorDefault を渡すのと同じです。
- 割り当てていないアロケータを示す定数 kCFAllocatorNull を渡すことができます。これは、アロケータを使用しようとしたエラーです。いくつかの作成関数には、補助記憶装置を再割り当てまたは解放するために使用される特別なアロケータのパラメータがあります。そのパラメータに kCFAllocatorNull を指定することにより、自動再割り当てまたは割り振り解除を防止します。
- CFGetAllocator 関数を使用して別の Core Foundation オブジェクトが使用するアロケータへの参照を取得し、その参照を渡すことができます。このテクニックを使用すると、関連するオブジェクトを、同じアロケータを使用してメモリ "ゾーン"に配置できます。
- カスタムアロケータへの参照を渡すことができます(カスタムアロケータの作成 を参照)。
カスタムアロケータを使用して、それをデフォルトのアロケータにしたい場合は、まず CFAllocatorGetDefault 関数を使用して現在のデフォルトアロケータへの参照を取得し、それをローカル変数に格納することをお勧めします。カスタムアロケータの使用が終了したら、CFAllocatorSetDefault 関数を使用して、格納されているアロケータをデフォルトアロケータとしてリセットします。
前の章 次の章