Placement new là biến thể của new: không cấp phát bộ nhớ, mà **khởi tạo đối tượng tại địa chỉ đã cho trước**.
Cú pháp: new (address) Type(initializer).
Ứng dụng:
- Tối ưu hiệu năng: tái dùng bộ nhớ đã cấp phát (pool allocator, object reuse).
- Nhúng hệ thống: đặt object tại vùng nhớ cụ thể (memory-mapped hardware, shared memory).
- Container tùy chỉnh: vector/allocator tự quản lý bộ nhớ.
Lưu ý: Không có placement delete. Phải gọi destructor thủ công: ptr->~Type().
Ví dụ
#include <iostream>
using namespace std;
struct Widget { int x; Widget(int v):x(v){ cout<<"Ctor "<x << endl;
p->~Widget(); // Gọi destructor thủ công
return 0;
}
Kết quả
Ctor 42 Value: 42 Dtor 42