• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목객체를 생성할 때 정적할당과 동적할당의 차이2019-05-01 19:23
작성자

옛날부터 정적할당과 동적할당의 차이가 잘 이해가 안 되어서 질문드립니다.

1. 정적할당과 동적할당의 장단점이 어떻게 되는가?

- "예를 들어 정적할당은 빠르고 동적할당은 필요한 메모리의 크기를 잘 모를 때 사용한다." 이러한특징 자체는 알겠는데,

그래도 구체적으로 어떨 때 정적할당을 쓰고 동적할당을 쓰는 지 잘 모르겠습니다.

정해진 모범답안은 없이 개발자가 그 때 그 때적절하다고 방향대로 짜면 되는 것인가요?


2. 함수 내에서 지역변수를 이용해 동적할당으로 생성된 객체의 소멸 시기.


class Point{
private: 
	int x, y;
	string name;
public:
	Point(int x, int y, string name) :x(x), y(y), name(name)
	{
		cout << "Point (" << x << ", " << y << ")" << name << "  constructed" << endl;
	}
	~Point()
	{
		cout << this->name << " Point has been deletedn";
	}
};
위와 같은 Point클래스가 있다고했을 때,A Code.
void doSomething()
{
	Point *p = new Point(0, 0, "Dynamically allocated");
}
이렇게 함수내에서 동적으로 객체를 생성하고 나면 프로그램이 종료되어도 소멸자가 호출되지 않는데,B Code.
Point doSomething()
{
	Point *p = new Point(0, 0, "Dynamically allocated");	return *p;
이렇게 p가 가리키는 객체를 리턴하면 프로그램이 종료될 때 소멸자가 호출 되더군요.A Code에서는 왜 소멸자가 호출되지 않는 것인가요? (소멸자의 출력문이 출력되지 않았다는 뜻)
댓글