Dlaczego w książce jest napisane, że muszę obsadzić malloca?

Dzisiaj dotarłem na stronę 167 z języka programowania C (wydanie drugie Brian W. Kernighan & Dennis M. Ritchie) {[10] } i okazało się, że autor mówi, że muszę rzucić malloc. Oto część z książki:

7.8.5 Zarządzanie Magazynem

Funkcje malloc i calloc otrzymują bloki pamięci dynamicznie.

void *malloc(size_t n)

Zwraca wskaźnik do n bajtów niezainicjalizowanej pamięci lub NULL, jeśli żądanie nie może być zadowolony.

void *calloc(size_t n, size_t size)

Zwraca wskaźnik do wystarczającej ilości wolnego miejsca dla tablicy N obiektów o określonym rozmiarze lub NULL, jeśli wniosek nie może zostać spełniony. Pamięć jest inicjalizowana na zero. Wskaźnik zwracany przez malloc lub calloc ma odpowiednie wyrównanie dla danego obiektu, ale musi być wrzucony do odpowiedniego typu, jak w

int *ip;
ip = (int *) calloc(n, sizeof(int));

Już wiem, że malloc (i jego rodzina) zwraca typ void * , i są dobre objaśnienia dlaczego nie rzucać malloc.

[6]}ale moje pytanie brzmi: dlaczego w książce jest napisane, że powinienem go rzucić?
Author: Community, 2015-09-18

1 answers

Od http://computer-programming-forum.com/47-c-language/a9c4a586c7dcd3fe.htm : {]}

In pre-ANSI C -- as described in K & R-1 -- malloc () return a char * i trzeba było oddać jej wartość zwrotną we wszystkich przypadkach, w których zmienna otrzymująca nie była również char *. Nowy void * wpisz w Standard C sprawia, że te kontury są niepotrzebne.

Aby uratować kogokolwiek od zakłopotania skaczącego niepotrzebnie do obrona K & R-2, poprosiłem Dennisa Ritchie za opinię, że mógłbym cytat o ważności cytowanego zdania ze strony 142. On odpowiedział:

w każdym razie, teraz, gdy ponownie przeczytałem rzeczy na str. 142, myślę, że to źle; jest napisane w taki sposób, że nie tylko defensywnie wbrew wcześniejszym zasadom wprowadza w błąd Zasady ANSI.

 204
Author: Keine Lust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 13:10:10