アロケータ
Core Foundation が抽象化するオペレーティングシステムサービスの中には、メモリ割り当てがあります。この目的のためにアロケータ(allocators、割り当て機能) を使用します。
アロケータは、メモリを割り当てたり割り当てを解除する不透明オブジェクトです。Core Foundation オブジェクトのメモリを直接割り当てたり、再割り当てたり、または割り当てを解除する必要は決してありません。オブジェクトを作成する関数にアロケータを渡して下さい。これらの関数には、名前に "Create" が埋め込まれています (例えば CFStringCreateWithPascalString など)。作成関数は、アロケータを使用して、作成するオブジェクトのメモリを割り当て(allocate)ます。
アロケータは、オブジェクトの寿命を通じてオブジェクトと関連付けられます。メモリの再割り当てが必要な場合、オブジェクトはその目的のためにアロケータを使用し、オブジェクトの割り当てを解除する必要がある場合、アロケータはオブジェクトの割り当て解除に使用されます。アロケータは、もともと作成されたオブジェクトが必要とするオブジェクトを作成するためにも使用されます。いくつかの関数は、一時的なバッファのメモリを解放するなど、特別な目的のためにアロケータに渡すこともできます。
Core Foundation では、独自のカスタムアロケータを作成できます。また、Core Foundation はシステム・アロケータを提供し、このアロケータを最初に現在のスレッドのデフォルト・アロケータに設定します。(スレッドごとにデフォルトのアロケータが 1 つあります) カスタムアロケータをコードの任意の時点のスレッドのデフォルトに設定できます。しかし、システム・アロケータは、ほとんどすべての状況で十分な、適切な汎用アロケータです。カスタムアロケータは、Mac OS 9 の特定の状況やパフォーマンスが問題になる場合のバルクアロケータなどの特殊な場合に必要になる場合があります。これらのまれな場合を除いて、カスタムアロケータを使用しないでください。また、特にライブラリの場合はデフォルトとして設定しないでください。
アロケータの詳細、およびカスタムアロケータの作成に関する詳細は、カスタムアロケータの作成 を参照してください。
前の章 次の章