Since a C pointer returns a "void*", and in addition to its own address it might refers somehow to the memory size reserved by malloc(size), i ask myself if declaration of "void*" is actually something completely unrelated to the type "void" used to execute procedures and if "void*" is actually a kind of type that self contain informations like the allocated memory block size, with an "internal" structure similar to the one showed below.
//An imaginary internal implementation of "type" void* used to create pointers
struct void*
{
char[4] address; //for 32bit systems;
int size; //memory block size;
};
void* ptr=malloc(10); //create a pointer called ptr of 10 bytes