Minwoo Dev.

[C++] new , delete 본문

C++

[C++] new , delete

itisminu 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