Minwoo Dev.
[C++] new , delete 본문
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
'C++' 카테고리의 다른 글
[C++] 멤버 이니셜라이저(Member Initializer) (0) | 2024.03.17 |
---|---|
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch05-1 : 복사 생성자의 정의 문제풀이 (0) | 2024.03.16 |
[C++] const 참조자, const 참조자를 사용한 Call-by-reference (0) | 2024.03.10 |
[C++] 참조자를 이용하여 함수 만들기, Call by reference with reference (0) | 2024.03.10 |
[C++] 참조자 (0) | 2024.03.10 |