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