본문 바로가기

C++문법 공부

new 연산자

C에서 메모리를 동적할당 할 때, 그러니까 HEAP 영역을 사용 할 때 malloc 과 free 함수를 사용했습니다.

C++는 함수가 아니라 연산자를 사용하여 메모리를 할당 합니다. (new/delete)

new 가 함수가 아닌 연산자이기 때문에 헤더파일이 별도로 필요하지 않습니다.

 

포인터 변수 = new 자료형(초기값);

new 연산자의 사용은 일반적으로 위와 같이 이루어 집니다.

자료형에는 당연하게도 객체가 올 수 있습니다.

 

초기값을 생략하게 되면 쓰레기값을 가집니다.

할당에 실패하면 NULL값을 반환합니다. 즉, NULL포인터가 됩니다.

해제 할 때는 delete 연산자를 사용합니다.

#include <iostream>
using namespace std;

int main()
{
	int* newint;
	string* newstring;

	newint = new int;
	newstring = new string;
	*newint = 801;
	*newstring = "Hello World";
	cout << "*newint = " << *newint << endl;
	cout << "*newstring = " << *newstring << endl;

	delete newint;
	delete newstring;
}

HEAP 메모리 공간에 해당 타입의 크기만큼 공간을 할당하고 초기값을 할당한 후 포인터 변수가 해당 주소를 참조하도록 하는 과정임을 알 수 있다.