Technical Interview Questions
.Net Interview Questions
C++ Interview Questions
Unix Interview Questions
C Interview Questions e-book
Aptitude Interview Questions
C/C++ Aptitude Questions
C Aptitude Questions
C Interview Questions >
Why does malloc(0) return valid memory address ? What's the use ?
malloc(0) does not return a non-NULL under every implementation.
An implementation is free to behave in a manner it finds
suitable, if the allocation size requested is zero. The
implmentation may choose any of the following actions:
* A null pointer is returned.
* The behavior is same as if a space of non-zero size
was requested. In this case, the usage of return
value yields to undefined-behavior.
Notice, however, that if the implementation returns a non-NULL
value for a request of a zero-length space, a pointer to object
of ZERO length is returned! Think, how an object of zero size
should be represented?
For implementations that return non-NULL values, a typical usage
is as follows:
func ( void )
int *p; /* p is a one-dimensional array,
whose size will vary during the
the lifetime of the program */
p = malloc(0); /* initial allocation */
perror (”FAILURE” );
/* … */
c = (size_t) … ; /* Calculate allocation size */
p = realloc ( p, c * sizeof *p );
/* use p, or break from the loop */
/* … */
Notice that this program is not portable, since an implementation
is free to return NULL for a malloc(0) request, as the C Standard
does not support zero-sized objects.