Mediumplacement-new
Что такое placement new?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Placement new — конструирует объект в уже выделенной памяти, не аллоцируя. Уничтожают явным деструктором.
// Сырой буфер с нужным выравниванием
alignas(Widget) unsigned char buf[sizeof(Widget)];
// Конструируем Widget прямо в buf
Widget* w = new (buf) Widget(42);
w->doWork();
// Уничтожаем ВРУЧНУЮ (delete нельзя — память не наша)
w->~Widget();Применяют в std::vector (размещение в pre-allocated буфере), пулах аллокаторов, std::optional/std::variant (внутренний буфер).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.