Placement new - это версия оператора new, позволяющая конструировать объект в заранее выделенном участке памяти.
Синтаксис:
c
Особенности:
- Не выделяет память самостоятельно, а использует предоставленный буфер.
- Возвращает указатель на сконструированный объект.
- Необходимо вручную вызывать деструктор объекта, когда он больше не нужен.
- Для освобождения памяти, выделенной для буфера, используется обычный
delete или delete[], но после вызова деструктора объекта.
Пример использования:
c
Применение:
- Создание объектов в разделяемой памяти (shared memory).
- Реализация пулов объектов (object pools).
- Низкоуровневое управление памятью в специализированных системах.
- Избегание выделения и освобождения памяти при создании временных объектов в критических по производительности участках кода.
Placement delete существует, но встречается реже и используется для отмены неудачного конструирования с использованием placement new, вызывая деаллокатор, который был бы вызван обычным new, но не деструктор объекта.