«new / delete» - это ключевые слова на языке C ++ (например, «for» и «while»), тогда как malloc / calloc - это вызовы функций в стандартной библиотеке C (например, «printf» и «sleep»).Очень разные звери, больше, чем их похожий синтаксис может позволить.
Основное отличие состоит в том, что 'new' и 'delete' запускают дополнительный пользовательский код - в частности, конструкторы и деструкторы.Все, что делает malloc - это выделение некоторой памяти для использования.При выделении памяти для простых простых старых данных (например, float или ints), «new» и «malloc» ведут себя очень схожим образом.Но когда вы запрашиваете место для класса, ключевое слово «new» выделяет память, а затем вызывает конструктор для инициализации этого класса.Большая разница.