Определение new в заголовке
void* operator new(size_t);
И определение malloc следующее:
void* malloc(size_t);
Теперь, поскольку C++ является строго типизированным языком, он требует от программиста приведения для преобразования указателя void* в требуемый программисту тип... В malloc мы должны выполнить cast, но не в new, хотя оба возвращают указатель void* Почему?