Сегодня я достиг страницы 167 Язык программирования C (второе издание Брайан У. Керниган и Деннис М. Ричи) и обнаружил, что автор говорит, что я должен использовать malloc
. Вот часть из книги:
7.8.5 Управление хранилищем
Функции malloc и calloc динамически получают блоки памяти.
void *malloc(size_t n)
возвращает указатель на n байтов неинициализированного хранилища или NULL, если запрос не может быть удовлетворен.
void *calloc(size_t n, size_t size)
возвращает указатель на достаточное свободное пространство для массива из n объектов указанного размера или NULL if запрос не может быть удовлетворен. Хранение инициализируется до нуля. Указатель, возвращаемый malloc или calloc, имеет правильное выравнивание для рассматриваемого объекта, но он должен быть отнесен к соответствующему типу, как в
int *ip; ip = (int *) calloc(n, sizeof(int));
Я уже знаю, что malloc
(и его семейство) возвращает тип void *, а есть хорошие объяснения, почему не бросать malloc
.
Но мой вопрос: почему в книге говорится, что я должен ее бросить?