ANSI 4.10.3 The behavior of the calloc, malloc, or realloc function if the size requested is zero
The calloc, malloc, and realloc functions accept zero as an argument. No actual memory is allocated, but a valid pointer is returned and the memory block can be modified later by realloc.