8 ŚRODOWISKO SYSTEMU UNIX___
Napisz funkcję calloc, korzystając z wywołań malloc lub traktując tę funkcję jako wzorzec.
Ćwiczenie 8.7. Funkcja malloc akceptuje specyfikację rozmiaru bez sprawdzenia jej sensowności; funkcja free zakłada, że zwalniany blok zawiera poprawne pole rozmiaru. Zmień te funkcje tak, aby zadawały sobie więcej trudu przy wykrywaniu błędów.
Ćwiczenie 8.8. Napisz podprogram bfree(p,n), który dowolny n-znakowy blok pamięci o adresie p dołącza do łańcucha wolnych bloków obsługiwanych przez funkcje malloc i free. Dzięki bfree użytkownik będzie mógł w każdej chwili dołączyć do tego łańcucha tablice statyczne lub zewnętrzne.
W dniu 31 października 1988 r. komitetowi ANSI przedstawiono w formie szkicu opis języka C do zatwierdzenia jako „American National Standard for Information Systems - Programming Language C, X3.159-1989”. Niniejszy przewodnik zawiera opis języka C, który jest interpretacją zaproponowanego Standardu, a nie sarn Standard; niemniej jednak dołożono wielu starań, aby uczynić go wiarygodnym.
Dokument ten w znacznej części opiera się na ogólnym zarysie Standardu, który z kolei był oparty na pierwszym wydaniu tej książki*; występują jednak duże różnice organizacyjne. Poza przemianowaniem kilku produkcji i brakiem formalizmu przy definiowaniu jednostek leksykalnych czy preprocesora, podana tu (dla kompletności języka) gramatyka jest równoważna zdefiniowanej przez Standard.
Komentarze zamieszczone w tym przewodniku są złożone z wcięciem i mniejszym drukiem, tak jak niniejszy komentarz. Najczęściej komentarze podkreślają różnice między Standardem ANSI języka C a językiem zdefiniowanym w pierwszym wydaniu tej książki lub ulepszeniami wprowadzonymi później przez różne kompilatory.
Program składa się z jednej lub więcej jednostek tłumaczenia zapisanych w plikach. Program jest tłumaczony w kilku fazach, które opisano w p. A12. W pierwszej fazie dokonuje się wstępnej leksykalnej transformacji programu, tzn. interpretuje wiersze poleceń rozpoczynające się znakiem # oraz wykonuje makrodefinicje i makrorozwi-nięcia. Po zakończeniu fazy preprocesora, opisanej w p. A12, program jest zredukowany do ciągu jednostek leksykalnych.
Patrz przypis na str. 11.
251