C++
[C++] new , delete
미누라니까요
2024. 3. 10. 18:02
728x90
반응형
SMALL
C언어에서는 동적 할당을 위해 malloc, free를 사용했다.
#include <string.h>
using namespace std;
char *MakeStrAdr(int len)
{
char *str = (char *)malloc(sizeof(char) * len);
return str;
}
int main(void)
{
char *str = MakeStrAdr(20);
strcpy(str, "Hi !! I am Minu!!");
cout << str << endl;
free(str);
return 0;
}
C++을 사용하여 malloc, free를 통한 동적 할당을 사용해보면 위와 같다.
위처럼 malloc, free를 사용하면 아래와 같은 단점이 존재한다.
- 할당할 대상의 정보를 무조건 바이트 크기로 전달해야함
- 반환형이 void 포인터이기 때문에 형변환을 거쳐야 한다.
따라서, C++은 다른 동적 할당 방식을 제공한다.
new
동적 할당을 사용해서 변수를 선언한다고 할 때, new를 사용한다면 간단해진다.
int * ptr = new int;
배열을 선언하는 경우에는 아래와 같다.
int * arr = new int[3];
길이가 3인 배열을 동적 할당으로 선언한 모습이다.
정리하면 아래와 같다.
배열이 아닌 경우
자료형 * 변수명 = new 자료형;
배열인 경우
자료형 * 변수명 = new 자료형[길이];
delete
사용을 마치고 나면 할당된 데이터를 해제해줘야 한다. 그럴 때 사용하는 것이 delete 이다.
배열이 아닌 경우의 해제
delete 변수명;
배열인 경우의 해제
delete 변수명[길이];
728x90
반응형
LIST