기타 학습/Language
[C++] 동적할당 new , 소멸 delete
sdoaolo
2022. 5. 10. 16:16
728x90
힙 영역에서 동적 메모리 할당과 소멸에 malloc 과 free가 사용되었었다. (c언어)
new 와 delete는 이걸 대체한다. (c++)
<malloc 과 free의 불편한점>
malloc(sizeof(int) * num);
free(nn);
1) 할당할 대상의 정보를 무조건 바이트단위로 전달
2) 반환형이 void 포인터형 >> 형변환
이를 new와 delete를 사용하면 불편한점이 사라진다.
new 사용법
int *ptr1 = new int;
double * ptr2 = new double;
int *arr1 = new int[3];
double * arr2 = new double[7];
delete 사용법
delete ptr1;
delete ptr2;
delete []arr1;
delete []arr2;
new와 delete를 이용한 동적할당 예시
char *makeStrAdr(int len){
// char * str = (char*)malloc(sizeof(char)*len);
char * str = new char[len];
return str;
}
int main(){
char * str = makeStrAdr(20);
strcpy(str, "my name is jieun");
cout << str << endl;
//free(str);
delete []str;
return 0;
}
C++에선 new연산자를 이용해 할당된 메모리 공간도 변수로 간주한다.
포인터 연산 없이 힙영역에 접근한다는 것..!
int * ptr = new int;
int &ref = *ptr;
ref = 20;
cout << *ptr << endl;