C에서 힙 메모리에 동적 할당 및 소멸에 사용했던 malloc과 free 함수가 있었다.
C++ 에서는 이를 대신해 new 와 delete 연산자가 새롭게 등장했다.(malloc과 free는 그대로 사용 가능)
#include <cstring>
#include <cstdlib>
#include <cstdio>
char * MakeStrAdr(int len)
{
char *str = (char*)malloc(sizeof(char) * len);
return str;
}
int main(void)
{
char *str = MakeStrAdr(20);
strcpy(str, "so happy");
printf("%s", str);
free(str);
return 0;
}
이와 같이, C 언어에서는 malloc과 free 함수를 통해 동적할당을 할 수 있었는데, 이 방법에는 두 가지의 불편사항이 있었다.
이를 개선하여 C++에서 새롭게 등장한 것이 앞서 말한 new 와 delete 연산자이다.
사용법은 다음과 같다.
int *ptr1 = new int; // int형 변수의 할당
double *ptr2 = new double; // double형 변수의 할당
int *arr1 = new int[3]; // 길이가 3인 int형 배열의 할당
delete ptr1; // 앞서 할당한 int형 변수의 소멸
delete ptr2; // 앞서 할당한 double형 변수의 소멸
delete []arr1; // 앞서 할당한 int형 배열의 소멸
다만, 객체(class)의 생성에는 반드시 new와 delete를 이용해야 한다.