일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스프링
- 문제풀이
- 코틀린
- 공부일지
- SW봉사
- 백준알고리즘
- 시나공
- 코딩교육봉사
- kotlin
- MYSQL
- 데이터베이스
- 백준
- softeer
- java
- 알고리즘
- C++
- 회고
- 코딩봉사
- 백준 알고리즘
- 프로그래머스
- 파이썬
- python
- 자바
- programmers
- 1과목
- CJ UNIT
- BFS
- SQL
- 소프티어
- 정보처리산업기사
Archives
- Today
- Total
JIE0025
[C++] 동적할당 new , 소멸 delete 본문
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;
'기타 학습 > Language' 카테고리의 다른 글
[C++] 클래스(class), 객체(Object) (0) | 2022.05.11 |
---|---|
[C++] 구조체 (0) | 2022.05.10 |
[C++] 참조자 (&) (0) | 2022.05.10 |
[C++] C언어 기본 복습 (const , 메모리공간, malloc, free, call-by-value, call-by-reference ) (0) | 2022.05.06 |
[C++] 이름공간 (namespace), 범위지정 연산자의 사용 (0) | 2022.05.06 |