이 섹션에서는 C++에서 배치 new 연산자가 무엇인지 볼 것입니다. 이 배치 new는 new 연산자의 또 다른 변형입니다. 일반적인 new 연산자는 두 가지 작업을 수행합니다. 메모리를 할당한 다음 할당된 메모리에 개체를 생성합니다.
new 연산자는 힙 섹션에 메모리를 할당하고 거기에 개체를 생성합니다. 그러나 배치 new 연산자의 경우 주어진 주소에 객체를 생성합니다. 메모리 할당을 해제하려면 new 연산자를 사용하여 메모리가 할당된 경우 delete 키워드를 사용할 수 있습니다. 그러나 신규 게재위치의 경우 게재위치 삭제 기능이 없습니다.
간단히 말해서, 배치 new를 사용하면 주어진 변수에 이미 할당된 메모리에 객체를 "구성"할 수 있습니다. 이는 이미 할당된 동일한 메모리를 재할당하지 않고 재사용하는 것이 더 빠르기 때문에 최적화에 유용합니다. 다음과 같이 사용할 수 있습니다.
new (address) (type) initializer
우리는 주어진 유형의 새로운 객체가 생성되기를 원하는 주소를 지정할 수 있습니다. 예를 들어.
예시 코드
#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; }
출력
a = 5 &a = 0x22fe34 After using placement new: a = 10 m = 0x22fe34 &a = 0x22fe34