The definition of new in the <new> header is:
 void* operator new(size_t);
And the definition of malloc is as stated:
 void* malloc(size_t);
Now, as C++ is a strongly typed language, it requires a cast from the programmer to convert a void* pointer to the type the programmer requires... In malloc, we have to perform a cast, but not in new, though both return a void* pointer. Why?
 
     
     
     
    