Easyпамять
Чем delete отличается от delete[]?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`delete` удаляет одиночный объект (из new). `delete[]` — массив (из new[]). Смешивание — UB.
Widget* w = new Widget();
delete w; // OK: одиночный
Widget* arr = new Widget[10];
delete[] arr; // OK: массив
// delete arr; // UB: вызовет деструктор только первого
// delete[] w; // UB: прочитает «длину» из мусораКомпилятор не предупреждает — в типе указателя этой информации нет. В современном C++ обе формы почти не нужны: std::vector, std::unique_ptr<T[]> управляют автоматически.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.