new T
возвращает T*
, поэтому нет необходимости его разыгрывать:
T* p = new T;
Тип возврата malloc
, с другой стороны, void*
, поэтому он должен быть приведен к T*
в C ++:
T* p = static_cast<T*>(malloc(sizeof(T));
Также обратите внимание, что, как указано в комментарии , new T
не только выделяет память для нового объекта , но также создает объект в этой памяти. malloc
не делает этого, поэтому вы должны сконструировать объект вручную с помощью размещение new
.