Чтобы выделить массив объектов в C++, используй оператор new[] с таким синтаксисом:
Type* pointer = new Type[size];
Например:
Fred* p = new Fred[100];
Это создаёт массив из 100 объектов Fred в куче и возвращает указатель на первый элемент.
Когда ты выделяешь массив с помощью new[], ты должен освободить его с помощью оператора delete[]:
delete[] p;
Никогда не используй delete без скобок для освобождения массива. Если использовать delete вместо delete[], это вызовет неопределённое поведение и утечки памяти.
C++ требует синтаксис [] в операторе delete, потому что указатели синтаксически неотличимы — нельзя понять, указывает ли указатель на один объект или на массив. Это ограничение досталось от C.
Скобки подсказывают компилятору:
new[] → Освобождаешь с delete[]new → Освобождаешь с deleteРассмотри использование современных альтернатив вроде std::vector<T> или std::array<T, N> для более безопасного автоматического управления памятью.
Когда ты освобождаешь динамический массив, выделенный с помощью new[], используя delete вместо delete[], будет утечка памяти только для первого элемента, а остальные элементы будут освобождены правильно.
Новый — ещё не проверен сообществом
Вы