Сьогодні я досяг сторінки 167 з Мова програмування C (друге видання Брайан У. Керніган & Dennis M. Ritchie) і виявив , що автор говорить , що я повинен кинути malloc
. Ось частина книги:
7.8.5 Управління зберіганням
Функції malloc і calloc динамічно отримують блоки пам'яті.
void *malloc(size_t n)
повертає вказівник на n байтів неініціалізованого сховища або NULL, якщо запит не може бути задоволений.
void *calloc(size_t n, size_t size)
повертає вказівник на достатньо вільного місця для масиву з n об'єктів вказаного розміру або NULL, якщо запит не може бути задоволений. Зберігання ініціалізовано до нуля. Вказівник, повернутий malloc або calloc, має відповідне вирівнювання для відповідного об'єкта, але він повинен бути переданий у відповідний тип, як у
int *ip; ip = (int *) calloc(n, sizeof(int));
Я вже знаю, що malloc
(та його сім'я) повертає тип void * , і є хороші пояснення, чому не робити передачуmalloc
.
Але моє запитання: Чому книга говорить, що я повинен її віддати?
void *
, а не був оновлений. Дивіться також цю відповідь .
malloc
оскільки це НЕ C ++ - за винятком випадків, коли вам доведеться - але не слід - за винятком ... AGGGHHHHHHH !!!!! :-)