new и operator newoperator new — это низкоуровневая функция выделения памяти, которая работает похожа на malloc — выделяет сырую память в heap и возвращает указатель. Но new — это полноценный оператор, который объединяет выделение памяти с инициализацией объекта.
operator new: Выделяет только память; не вызывает конструкторыnew: Выделяет память И вызывает конструктор объектаКогда ты пишешь:
MyClass* obj = new MyClass();
Это на самом деле выполняет две операции:
operator new выделяет память для MyClassMyClass() вызывается на этой памятиЕсли ты используешь operator new напрямую:
void* raw_memory = operator new(sizeof(MyClass));
MyClass* obj = new(raw_memory) MyClass(); // placement new
delete (не operator delete), чтобы правильно удалить объекты, так как это вызывает деструкторыoperator new полезен, когда тебе нужен тонкий контроль над выделением памяти или кастомные аллокаторыnew и delete для объектно-ориентированного C++; избегай прямых вызовов operator new, кроме случаев, когда ты реализуешь кастомные стратегии управления памятьюДумай о operator new как о примитиве выделения памяти, а о new как о полноценном операторе, который берёт на себя и выделение, и инициализацию. Понимание этого различия критично для правильного управления ресурсами и предотвращения утечек памяти в C++.
operator new выделяет память и автоматически вызывает конструктор объекта, работая аналогично malloc в C.
Новый — ещё не проверен сообществом
Вы