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

C++에서 언제 new 연산자를 사용하고 언제 사용해서는 안 됩니까?


new 연산자의 사용은 힙에 대한 메모리 할당 요청을 나타냅니다. 사용 가능한 메모리가 충분하면 메모리를 초기화하고 해당 주소를 포인터 변수에 반환합니다.

new 연산자는 데이터 개체가 delete가 호출될 때까지 메모리에 남아 있어야 하는 경우에만 사용해야 합니다. 그렇지 않고 new 연산자를 사용하지 않으면 개체가 범위를 벗어날 때 자동으로 소멸됩니다. 즉, new를 사용하는 개체는 수동으로 정리되고 다른 개체는 범위를 벗어날 때 자동으로 정리됩니다.

다음은 new 연산자의 구문입니다.

pointer_variable = new datatype;

위의 구문에서 pointer_variable은 메모리 주소가 반환되는 포인터 변수이고 datatype은 메모리에 대한 내장 데이터 유형입니다.

new 연산자의 사용을 보여주는 프로그램은 다음과 같습니다.

예시

#include <iostream>
using namespace std;
int main () {
   int *ptr1 = NULL;
   ptr1 = new int;
   float *ptr2 = new float(223.324);
   *ptr1 = 28;
   cout << "Value of pointer variable 1 : " << *ptr1 << endl;
   cout << "Value of pointer variable 2 : " << *ptr2 << endl;
   delete ptr1;
   delete ptr2;
   return 0;
}

출력

위 프로그램의 출력은 다음과 같습니다.

Value of pointer variable 1 : 28
Value of pointer variable 2 : 223.324

이제 위의 프로그램을 이해합시다.

new 연산자는 메모리를 초기화하고 해당 주소를 포인터 변수 ptr1 및 ptr2로 반환하는 데 사용됩니다. 그러면 ptr1 및 ptr2가 가리키는 메모리 위치에 저장된 값이 표시됩니다. 마지막으로 삭제 연산자를 사용하여 메모리를 해제합니다.

이것을 보여주는 코드 조각은 다음과 같습니다 -

int *ptr1 = NULL;
ptr1 = new int;
float *ptr2 = new float(223.324);
*ptr1 = 28;
cout << "Value of pointer variable 1 : " << *ptr1 << endl;
cout << "Value of pointer variable 2 : " << *ptr2 << endl;
delete ptr1;
delete ptr2;