This question asks what is the dynamic type of the object allocated by malloc
and according to the top answer:
The return value of
malloc
is a block of uninitialized storage. No object has been constructed within that storage. And therefore it has no dynamic type.
This brings another question: at what point does it make sense to say that the storage returned by malloc
gets a type. For example:
void *p = malloc(sizeof(int));
int *pi = (int*)p;
can we say that pi
above points to an object of dynamic type int
despite the fact that it is uninitialized?