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 подскажет развёрнутый ответ в реальном времени.