The ToolTalk service provides the calls listed in Table 13–1 to manage the storage of information in the ToolTalk API allocation stack:
Table 13–1 Managing ToolTalk Storage
Return Type |
ToolTalk Function |
Description |
---|---|---|
int |
tt_mark(void) |
Marks information returned by a series of functions. |
void |
tt_release(int mark) |
Frees information returned by a series of functions. |
caddr_t |
tt_malloc(size_t s) |
Reserves a specified amount of storage in the allocation stack for your use. |
void |
tt_free(caddr_t p) |
Frees storage set aside by tt_malloc. This function takes an address returned by the ToolTalk API and frees the associated storage. |
The tt_mark() and tt_release() functions are a general mechanism to help you easily manage information storage. The tt_mark() and tt_release() functions are typically used at the beginning and end of a routine where the information returned by the ToolTalk service is no longer necessary once the routine has ended.
To ask the ToolTalk service to mark the beginning of your storage space, use tt_mark. The ToolTalk service returns a mark, an integer that represents a location on the API stack. All the information that the ToolTalk service subsequently returns to you will be stored in locations that come after the mark.
When you no longer need the information contained in your storage space, use tt_release() and specify the mark that signifies the beginning of the information you no longer need.
Example 13–1 calls tt_mark() at the beginning of a routine that examines the information in a message. When the information examined in the routine is no longer needed and the message has been destroyed, tt_release() is called with the mark to free storage on the stack.
The tt_malloc() and tt_free() functions are a general mechanism to help you easily manage allotted storage allocation.
tt_malloc() reserves a specified amount of storage in the allocation stack for your use. For example, you can use tt_malloc() to create a storage location and copy the sessid of the default session into that location.
To free storage of individual objects that the ToolTalk service provides you pointers to, use tt_free(). For example, you can free up the space in the API allocation stack that stores the sessid after you have examined the sessid. tt_free() takes an address in the allocation stack (a char * pointer or an address returned from tt_malloc()) as an argument.