Функция CALLOC весьма сходна с функцией ALLOC, использо-ванной нами в предыдущих главах. В результате обращения CALLOC(N, SIZEOF(OBJCCT)) возвращается либо указатель пространства, достаточного дляразмещения N объектов указанного размера, либо NULL, еслизапрос не может быть удволетворен. Отводимая память инициа-лизируется нулевыми значениями. Указатель обладает нужным для рассматриваемых объектоввыравниванием, но ему следует приписывать соответствующийтип, как в CHAR *CALLOC(); INT *IP; IP=(INT*) CALLOC(N,SIZEOF(INT)); Функция CFREE(P) освобождает пространство, на котороеуказывает "P", причем указатель "P" певоначально должен бытьполучен в результате обращения к CALLOC. Здесь нет никакихограничений на порядок освобождения пространства, но будетнеприятнейшей ошибкой освободить что-нибудь, что не было по-лучено обращением к CALLOC. Реализация программы распределения памяти, подобнойCALLOC, в которой размещенные блоки могут освобождаться впроизвольном порядке, продемонстрирована в главе 8.
* 8. Интерфейс системы UNIX *
Материал этой главы относится к интерфейсу между с-прог-раммами и операционной системой UNIX. Так как большинствопользователей языка "C" работают на системе UNIX, эта главаокажется полезной для большинства читателей. даже если выиспользуете с-компилятор на другой машине, изучение приводи-мых здесь примеров должно помочь вам глубже проникнуть в ме-тоды программирования на языке "C". Эта глава делится на три основные части: ввод/вывод,система файлов и распределение памяти. Первые две частипредполагают небольшое знакомство с внешними характеристика-ми системы UNIX. В главе 7 мы имели дело с системным интерфейсом, которыйодинаков для всего многообразия операционных систем. На каж-дой конкретной системе функции стандартной библиотеки должныбыть написаны в терминах ввода-вывода, доступных на данноймашине. В следующих нескольких разделах мы опишем основнуюсистему связанных с вводом и выводом точек входа операцион-ной системы UNIX и проиллюстрируем, как с их помощью могутбыть реализованы различные части стандартной библиотеки.