When the requested size is zero the behavior of the memory allocation functions malloc()
, calloc()
, and realloc()
is implementation-defined. Section 7.22.3 of the C standard [ISO/IEC 9899:2011] states:
If the size of the space requested is zero, the behavior is implementation-defined: either a null pointer is returned, or the behavior is as if the size were some nonzero value, except that the returned pointer shall not be used to access an object.
...
CERT C++ Secure Coding Standard: MEM04-CPP. Do not perform zero length allocations
ISO/IEC 9899:2011 Section Section 7.22.3, "Memory management functions"
...