2.6 型付きバッファの解放

tpfree(3c)関数は、tpalloc()で割り当てられたバッファ、またはtprealloc()で再度割り当てられたバッファを解放します。次はtpfree()関数のシグネチャです:

void tpfree(char *ptr)

tpfree()関数の引数は、次のリストに示すptrだけです。

表2-5 tpfree()関数の引数

引数 説明
ptr データ・バッファを指すポインタ。このポインタは、tpalloc()またはtprealloc()の呼出しで設定されます。NULLは指定できません。また、文字型にキャストする必要があります。この2つの条件が満たされていない場合、この関数は何も解放しないか、エラー条件を通知しないで制御を戻します。

tpfree()を使用してFML32バッファを解放するとき、ルーチンは埋め込まれたバッファをすべて再帰的に解放して、メモリー・リークの発生を防ぎます。埋め込みバッファが解放されないようにするには、対応するポインタにNULLを指定してからtpfree()ルーチンを発行します。ptrがNULLの場合、何も処理は行われません。

次のリストは、tpfree()関数を使用してバッファを解放する方法を示しています。

バッファの解放のリスト

struct aud *audv; /* pointer to aud view structure */
. . .
audv = (struct aud *)tpalloc("VIEW", "aud", sizeof(struct aud));
. . .
tpfree((char *)audv);