Ответ
delete[] — это оператор в C++, предназначенный для освобождения памяти, ранее выделенной для массива с помощью оператора new[].
Ключевые моменты:
- Парность: Если память была выделена через
new Type[size], то освобождать её обязательно нужно черезdelete[]. Использование простогоdeleteвместоdelete[]для массива ведёт к неопределённому поведению (undefined behavior), утечкам памяти или повреждению кучи. - Вызов деструкторов:
delete[]гарантированно вызывает деструкторы для всех объектов в массиве в порядке, обратном их созданию, а затем освобождает память.
Пример:
// Выделение памяти для массива из 10 объектов MyClass
MyClass* array = new MyClass[10];
// ... работа с массивом ...
// Корректное освобождение памяти
delete[] array;
array = nullptr; // Хорошая практика — обнулить указатель
Связь с тестированием (QA):
- Статический анализ: Инструменты статического анализа кода (например, PVS-Studio, Clang-Tidy) могут обнаруживать ошибки парности
new[]/delete[]. - Динамический анализ: Инструменты динамического анализа, такие как Valgrind (Memcheck) или AddressSanitizer, помогают находить утечки памяти и ошибки при работе с кучей, возникающие из-за несоответствия
new[]иdelete. - Code Review: Тестировщик, участвующий в ревью кода, должен обращать внимание на корректность управления памятью в критических участках C++ кода.