Единственное сходство состоит в том, что malloc
/ new
оба возвращают указатель, который обращается к некоторой памяти в куче, и они оба гарантируют, что, как только такой блок памяти будет возвращен, он не будет возвращен, если только Вы освобождаете / удаляете это сначала. То есть они оба «выделяют» память.
Однако, new
/ delete
выполняет произвольную другую работу, кроме того, через конструкторы, деструкторы и перегрузку операторов. malloc
/ free
только когда-либо выделяет и освобождает память.
Фактически, new
достаточно настраиваем, чтобы не обязательно возвращать память из кучи или даже выделять память вообще. Однако по умолчанию new
делает.