Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Ứng dụng của Placement New trong C++


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