Выделение нулевой памяти
ANSI 4.10.3 Поведение функции calloc, malloc или realloc, если запрошенный размер равен нулю
Функции calloc, malloc и realloc принимают в качестве аргумента нуль. Фактическая память не распределяется, однако возвращается допустимый указатель, и блок памяти можно изменить впоследствии путем перераспределения.