1.4 Управление памятью

Предыдущая  Содержание  Следующая V*D*V

Мы кое-что упустили из виду: как можно получить набор? Set является указателем, а не типом, определённом через typedef; таким образом, невозможно определить локальные или глобальные переменные типа Set. Вместо этого для ссылки на множества и элементы мы собираемся использовать только указатели, и декларируем источник и утилизатор всех элементов данных в new.h:

 

void * new (const void * type, ...);

void delete (void * item);

 

Подобно Set.h этот файл защищён символом препроцессора NEW_H. Текст ниже показывает только интересные части каждого нового файла, полный код всех примеров есть на дискете с исходниками.

new() принимает какой-нибудь дескриптор, похожий на Set и, возможно, дополнительные аргументы для инициализации, и возвращает указатель на новый элемент данных с представлением, соответствующим дескриптору. delete() принимает указатель, первоначально созданный new() и высвобождает связанные ресурсы.

new() и delete() по-видимому являются внешним интерфейсом к функциям ANSI-C calloc() и free(). Если они есть, дескриптор должен указывать, по крайней мере на то, сколько требуется памяти.

Предыдущая  Содержание  Следующая