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 메모리 공간에 해당 타입의 크기만큼 공간을 할당하고 초기값을 할당한 후 포인터 변수가 해당 주소를 참조하도록 하는 과정임을 알 수 있다.
'C++문법 공부' 카테고리의 다른 글
가상함수 Virtual과 오버라이딩 (0) | 2023.06.27 |
---|---|
포함 (0) | 2023.06.27 |
typedef를 클래스 안에서만 맴버로 사용하기 (0) | 2023.06.25 |
객체 맴버로 열거체(enum)사용하기 (0) | 2023.06.24 |
정적 맴버 함수를 사용해서 객체를 생성하기 (0) | 2023.06.22 |