1.4 Управление памятью |
Предыдущая Содержание Следующая |
Мы кое-что упустили из виду: как можно получить набор? 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(). Если они есть, дескриптор должен указывать, по крайней мере на то, сколько требуется памяти. |
Предыдущая Содержание Следующая |