Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 배치 새 연산자

<시간/>

이 섹션에서는 C++에서 배치 new 연산자가 무엇인지 볼 것입니다. 이 배치 new는 new 연산자의 또 다른 변형입니다. 일반적인 new 연산자는 두 가지 작업을 수행합니다. 메모리를 할당한 다음 할당된 메모리에 개체를 생성합니다.

new 연산자는 힙 섹션에 메모리를 할당하고 거기에 개체를 생성합니다. 그러나 배치 new 연산자의 경우 주어진 주소에 객체를 생성합니다. 메모리 할당을 해제하려면 delete를 사용할 수 있습니다. new 연산자를 사용하여 메모리가 할당된 경우 키워드입니다. 하지만 새 게재위치의 경우 게재위치 삭제가 없습니다. 기능.

간단히 말해서, 배치 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