C++은 객체를 스택이나 힙에다 할당할 수 있다.
스택에 할당된 객체는 지역변수로서 해당함수가 종료되면 자동으로 해제된다.
힙에 할당된 객체는 개발자가 직접해제를 해주어야 한다.
먼저 Point라는 클래스의 객체 하나를 만들어보겠다.
스택에 생성
Point p;
-> 스택에 Point 객체 하나를 만들고 이름을 p1으로 지음
힙에 생성
Point *p = new Point();
-> 힙에 Point 객체 하나 만들고 주소값을 p1에 저장.
스택에 객체 배열 생성
Point p[3];
-> 스택에 Point 객체 배열을 3개 만들고 p[i]에 객체를 저장
스택에 객체 포인터 배열 생성
Point *p[3];
-> 스택에 Point 객체 포인터 배열을 3개 만들고 p[i]에 주소를 저장
힙에 객체 배열 생성
Point *p = new Point[3];
-> 힙에 Point 객체 배열을 3개 만들고 p[i]에 객체를 저장
-> p에는 배열의 첫번째 주소를 저장
힙에 객체 포인터 배열 생성
Point **p = new Point[3];
->힙에 Point 객체 포인터 배열을 3개 만들고 p[i]에 주소를 저장
->p에는 배열의 첫번째 주소를저장
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
#include <iostream>
#include <cstring>
class Point
{
public :
void show()
{
cout << "안녕" << endl;
}
};
int main()
{
Point p1; //스택에 선언
Point* p2 = new Point(); // 힙에 선언
Point p3[3];
Point* p4[3];
Point* p5 = new Point[3];
Point** p6 = new Point * [3];
p1.show();
p2->show();
p3[0].show();
p4[1]->show();
p5[1].show();
p6[1]->show();
}