Подтвердить что ты не робот

Требуется ли malloc() перед realloc()?

Так как я прочитал, realloc будет действовать как malloc, если указанный размер равен 0, я использовал его без malloc(), если указатель был статичным, глобальным или явно установлен равным NULL, если он автоматически.

Однако я замечаю, что многие программисты пытаются установить его или установить в malloc (1). Это необходимо?

4b9b3361

Ответ 1

От Открыть настройки групп:

Если ptr является нулевым указателем, realloc() должен быть эквивалентен malloc() для указанный размер.

Если ptr не соответствует указателю возвращенный ранее calloc(), malloc() или realloc() или если пространство ранее был освобожден вызов free() или realloc(), поведение undefined.

Ответ 2

malloc не требуется, вы можете использовать только realloc.

malloc(n) эквивалентно realloc(NULL, n).

Тем не менее, часто используется malloc вместо специальной семантики realloc. Это не вопрос того, что работает, но не путают людей, читающих код.

(Edit: удалено упоминание realloc, действующее как free, так как оно не является стандартным C. См. комментарии.)