[C++/Syntax] New/Delete (Ref Tip)

New / Delete 동적 할당

기존의 malloc, calloc 과 같은 힙에 동적으로 할당할 수 있는 문법이다.
C++에서 추가된 Class에 대한 개념을 사용할 때 Class를 동적으로 할당 하기 위해선 New/Delete를 써야한다.


char *MakeStr(int len) {
	char *str = (char*)malloc(len*sizeof(char));
	return str;
}

int main() {
	char *str = MakeStr(20);
	strcpy(str,"Test");
	std::cout << str << std::endl;
	free(str);
	return 0;
}

기존엔 위와 같이 malloc이나 calloc를 이용해 원하는 크기만큼 할당해 원하는 포인터형으로 변환하여 사용한다.

하지만 New/Delete는 다르다.

char *MakeStr(int len) {
	char *str = new char[len];
	return str;
}

int main() {
	char *str = MakeStr(20);
	strcpy(str,"Test");
	std::cout << str << std::endl;
	delete[]str;
	return 0;
}

new 자료형[길이] 이와 같이 선언하면 해당 자료형 포인터를 반환한다.
사용후 delete []str (배열이 아닌경우 delete str)로 지워줄 수 있다.

 

Tip

참조(Reference)를 통해서 포인터를 사용하지 않고 힙의 할당된 데이터에 접근 할 수 있다.

int *ptr = new ptr;
int &ref = *ptr;
ref = 20;
std::cout<<*ptr;

–output–
20

카테고리C++

글의 문제가 있다면 댓글을 달아 주세요.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.