ToolTalk ユーザーズガイド

情報のマーク付けと解放

tt_mark() 関数と tt_release() 関数は、情報の記憶領域を管理しやすくするための一般的な機構です。tt_mark() 関数と tt_release() 関数は、通常、ルーチンが終了して ToolTalk サービスによって返された情報が必要なくなった場合に、ルーチンの開始と終了時に使用されます。

記憶領域の情報のマーク付け

ToolTalk サービスに記憶領域の開始をマークするよう要求するには、tt_mark を使用します。ToolTalk サービスは、API スタック上の場所を表す整数のマークを 1 つ返します。ToolTalk サービスがそれ以降に返す情報はすべて、そのマークの後ろに格納されます。

不要になった情報の解放

記憶領域に格納されている情報が不要になった場合は、tt_release() を使用して、不要になった情報の開始位置を示すマークを指定します。

情報のマーク付けと解放の例

例 13–1 は、メッセージ内の情報を検査するルーチンの開始位置で tt_mark() を呼び出します。このルーチン内で検査された情報が不要になってメッセージが破棄されたとき、tt_release() がそのマークとともに呼び出され、スタック上の記憶領域を解放します。


例 13–1 記憶領域の情報のマーク付け

 	/*
	 * Get a storage mark so we can easily free all the data
  * ToolTalk returns to us.
	 */

	mark = tt_mark();

	if (0==strcmp(“ttsample1_value”, tt_message_op(msg_in))) {
			tt_message_arg_ival(msg_in, 0, &val_in);
			xv_set(gauge, PANEL_VALUE, val_in, NULL);
 }

	tt_message_destroy(msg_in);
 tt_release(mark);
	return;