2016. 12. 6. 14:50 C++/정보
C++] malloc/free new/delete 차이
반응형
[malloc]
C기반의 메모리 동적 할당함수
[free]
malloc/calloc/relloc 로 동적할당된 메모리를 해제할 때 사용
[new]
C++기반의 메모리 동적 할당 함수.
(클래스를 실체화 할 때 사용)
[delete]
new로 생성한 클래스의 소멸자를 호출하며, 메모리 해제를 담당
[malloc/new]
malloc)
- 라이브러리가 제공하는 "함수"
- 필요한 메모리만큼 할당 후 void*를 반환하므로 sizeof()함수 필요.
==> ex) int *i = (int*) malloc (sizeof(int));
[void *형 리턴이므로 (int *)등의 형변환 필요]
- 메모리 할당의 역할뿐. 어떤 값을 초기화 해줄 수 없음.
new)
- C++ 기반의 메모리 동적 할당 "연산자"
- 해당 타입의 주소값을 리턴하므로 따로 메모리 사이즈 측정 함수 필요 없음.
- 해당 생성자를 통해 값을 초기화 할 수 있다.
==> ex) int* ptr = new int;
delete ptr;
int* arr = new int[5];
delete []arr;
[free/delete]
free)
- 라이브러리가 제공하는 "함수"
- 해당 메모리 해제 외의 기능 없음.
delete)
- 언어가 제공하는 "연산자"
- 메모리 해제 및 소멸자 호출.
반응형
'C++ > 정보' 카테고리의 다른 글
C++] 쉬어가기 - C++ 접근제한자 (0) | 2016.12.14 |
---|---|
C++] 쉬어가기 - C++ 코딩의 정석 / 코딩의 기본 규약 (0) | 2016.12.13 |
C++] 상속과 Virtual 함수 (0) | 2016.12.06 |
C++] String int/double/float 등으로 형변환 (0) | 2016.11.29 |
C++] 암시적/명시적 형변환 (0) | 2016.11.23 |