Trong phần này, chúng ta sẽ xem toán tử mới của vị trí trong C ++ là gì. Vị trí mới này là một biến thể khác của toán tử mới. Toán tử mới bình thường thực hiện hai điều. Nó cấp phát bộ nhớ, và sau đó xây dựng một đối tượng trong bộ nhớ được cấp phát.
Toán tử mới cấp phát bộ nhớ trong phần heap và xây dựng các đối tượng ở đó. Nhưng đối với toán tử new vị trí, nó xây dựng đối tượng tại địa chỉ đã cho. Để phân bổ bộ nhớ, chúng ta có thể sử dụng từ khóa delete nếu bộ nhớ được cấp phát bằng toán tử new. Nhưng đối với vị trí mới, không có tính năng xóa vị trí.
Tóm lại, vị trí mới cho phép bạn "xây dựng" một đối tượng trên bộ nhớ đã được cấp phát cho một biến nhất định. Điều này rất hữu ích cho việc tối ưu hóa vì việc không phân bổ lại và sử dụng lại chính bộ nhớ đã được gán cho nó sẽ nhanh hơn. Nó có thể được sử dụng như sau:
new (address) (type) initializer
Chúng ta có thể chỉ định một địa chỉ mà chúng ta muốn một đối tượng mới của kiểu đã cho được xây dựng. Ví dụ.
Mã mẫu
#include<iostream> using namespace std; int main() { int a = 5; cout << "a = " << a << endl; cout << "&a = " << &a << endl; // Placement new changes the value of X to 100 int *m = new (&a) int(10); cout << "\nAfter using placement new:" << endl; cout << "a = " << a << endl; cout << "m = " << m << endl; cout << "&a = " << &a << endl; return 0; }
Đầu ra
a = 5 &a = 0x22fe34 After using placement new: a = 10 m = 0x22fe34 &a = 0x22fe34