Выделение памяти под TLI-структуры

Динамическое выделение оперативной памяти под различные структуры данных, используемые TLI, удобно осуществлять функцией t_alloc, имеющей следующий вид

#include <tiuser.h>

char *t_alloc (fd, structType, fields)

int fd;

int structType;

int fields;

Аргумент fd задает дескриптор ранее созданной функцией t_open транспортной точки.

Аргумент structType задает тип структуры данных, под которую необходимо выделить память, и может принимать следующие значения:

T_INFO для struct t_info;

T_BIND для struct t_bind;

T_CALL для struct t_call;

T_UNITDATA для struct t_unitdata;

T_DIS для struct t_discon и др.

Каждая из указанных структур (исключая struct t_info) содержит одно или несколько полей типа struct netbuf. Для каждого из таких полей можно также потребовать динамического выделения памяти. Аргумент fields конкретизирует это требование, допуская задание fields в виде побитового ИЛИ из следующих значений:

T_ALL для выделения памяти для всех полей типа struct netbuf, имеющихся в структуре;

T_ADDR для поля addr;

T_UDATA для поля udata;

T_OPT для поля opt.

При успешном завершении функция возвращает указатель на размещенную структуру данных, в противном случае - NULL.

Освобождение памяти

Для освобождения оперативной памяти, динамически выделенной под различные структуры данных, используемые TLI, удобно использовать функцию t_free, имеющую следующий вид

#include<tiuser.h>

int t_free (ptr, structType)

char *ptr;

int structType;

Аргумент ptr указывает освобождаемую область памяти.

Аргумент structType задает тип структуры данных, занимающей память. Этот аргумент может принимать те же значения, что и аналогичный аргумент функции t_alloc.

Функция t_free освобождает оперативную память, занятую собственно структурой и всеми ее буферами типа struct netbuf.

При успешном завершении функция t_free возвращает ноль, иначе - число "-1" и устанавливает код ошибки в глобальной переменной t_errno.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: