new[] и delete[]Когда ты выделяешь массив через new T[n], ты должен освободить его через delete[], а не delete. Это критическое требование в C++.
[]Если ты используешь delete вместо delete[] на массиве:
Компилятор C++ автоматически не отслеживает, указывает ли указатель на один объект или на массив. Это полностью ответственность программиста — использовать правильный синтаксис освобождения памяти. Компилятор предполагает, что ты знаешь, что выделил, и будешь использовать соответствующий оператор удаления.
Когда ты выделяешь память через new[]:
delete пытается неправильно освободить эту памятьЧтобы избежать этой критической ошибки:
delete[] при освобождении массивов, выделенных через new[]std::unique_ptr<T[]> или std::vector<T>, которые автоматически освобождают памятьУмные указатели — это современное решение в C++, которое полностью устраняет этот класс ошибок.
Компилятор C++ выдаст ошибку времени компиляции, если ты используешь delete вместо delete[] для массива, выделенного с помощью new[].
Новый — ещё не проверен сообществом
Вы