необходимо ли печатать malloc и calloc

Возможный дубликат:
Вывести результат malloc?

Я искал поисковые запросы, чтобы узнать причину типизации металока и calloc . Но я только обнаружил, что тип-casting malloc не нужен, поскольку он возвращает указатель void, но как насчет calloc . Это та же причина для calloc тоже ???

Теперь, если мы вернемся к первой точке, о возвращаемом значении malloc и calloc . Затем я обнаружил, что оба возвращают выделенные пробелы . Итак, я немного запутался здесь. Итак, мои вопросы

  1. Какова возвращаемая стоимость malloc и calloc

  2. Нужно ли печатать malloc и calloc . И почему ?

Какова возвращаемая стоимость malloc и calloc?

Это указатель на void ( void* ).

Нужно ли печатать malloc и calloc. И почему ?

Нет, потому что преобразование из указателя в void в указатель на объект неявно.

C11 (n1570), § 6.3.2.3 Указатели
Указатель на void может быть преобразован в указатель или из указателя на любой тип объекта.

Он подходит как для malloc и для calloc .

malloc() или calloc() возвращает void * который может быть назначен любому типу указателя. В C нет необходимости вызывать тип void* поскольку он неявно выполняется компилятором. Но в c ++ он даст вам ошибку, если вы не будете вызывать тип

Возвращаемое значение malloc и calloc является void* . Адрес пространства памяти кучи, выделенного этими функциями.

Обе функции выделяют память. Единственное различие между ними состоит в том, что

  • malloc просто выделяет память.
  • calloc выделяет память и инициализирует ее до 0.

В C не рекомендуется указывать возвращаемое значение этих функций.

В C ++ это обязательное действие.

Какова возвращаемая стоимость malloc () и calloc ()?

 void *malloc(size_t size); void *calloc(size_t nmemb, size_t size); 

void* возвращает обе функции.

Нужно ли печатать malloc и calloc. И почему ?

Нет. Принудительный тип не требуется. Функции malloc() и calloc() возвращают указатель на выделенную память, которая соответствующим образом выровнена для любой переменной. При ошибке эти функции возвращают NULL . NULL также может быть возвращен успешным вызовом malloc() с размером нуля или успешным вызовом calloc() с nmemb или размером, равным нулю.