bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo C リファレンス > セクション 3c - C 関数 |
Tuxedo C リファレンス
|
名前
tpfree()−型付きバッファの解放を行うルーチン
形式
#include <atmi.h>
void tpfree(char *ptr)
機能説明
tpfree() の引数は、以前に tpalloc() または tprealloc() によって得られたバッファを指すポインタです。ptr が NULL の場合は、動作は行われません。ptr が型付きバッファを指していない場合 (または、その前に tpfree() を使用して解放した領域を指している場合)、不定の結果が発生します。サービス・ルーチン内では、ptr がサービス・ルーチンに渡されたバッファを指している場合、tpfree() は単に終了し、そのバッファを解放しません。
ある種のバッファ・タイプは、バッファの解放処理の一環として、状態情報あるいは関連するデータを削除する必要があります。tpfree() は、バッファを解放する前にこうした関連情報を (通信マネージャ固有の方法に従って) 削除します。
tpfree() が終了した後は、ptr を BEA Tuxedo ATMI システムのルーチンの引数として使用したり、その他の方法で使用したりしないようにしてください。
マルチスレッドのアプリケーション中のスレッドは、TPINVALIDCONTEXT を含め、どのコンテキスト状態で実行していても、tpfree() の呼び出しを発行できます。
tpfree() を使用して FML32 バッファを解放するとき、ルーチンは埋め込まれたバッファをすべて再帰的に解放して、メモリ・リークの発生を防ぎます。埋め込まれたバッファが解放されないようにするには、対応するポインタに NULL を指定してから tpfree() コマンドを発行します。上記で説明したように、ptr が NULL の場合アクションは発生しません。
戻り値
tpfree() は、呼び出し側に値を返しません。したがって、この関数は、void で宣言されています。
使用法
この関数を、C ライブラリの malloc()、realloc()、または free() と組み合わせて使用するのは避けてください (tpalloc() で割り当てたバッファを、free() を使用して解放しないでください)。
関連項目
「C 言語アプリケーション・トランザクション・モニタ・インターフェイスについて」、tpalloc(3c)、tprealloc(3c)
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |