As far as I understand the wording in 5.2.9 Static cast, the only time the result of a void*
-to-object-pointer conversion is allowed is when the void*
was a result of the inverse conversion in the first place.
Throughout the standard there is a bunch of references to the representation of a pointer, and the representation of a void
pointer being the same as that of a char
pointer, and so on, but it never seems to explicitly say that casting an arbitrary void
pointer yields a pointer to the same location in memory, with a different type, much like type-punning is undefined where not punning back to an object's actual type.
So while malloc
clearly returns the address of suitable memory and so on, there does not seem to be any way to actually make use of it, portably, as far as I have seen.