new 와 delete
new는 C언어의 malloc을, delete는 free를 대신하는 키워드이다.
new와 delete연산자는 내부에서 malloc()과 free()함수를 호출한다.
◎굳이 왜 malloc과 free를 쓰지 않고 new와 delete를 사용하는 것일까?
malloc을 이용하여 동적할당을 할 때 할당할 대상의 정보를 무조건 바이트 크기 단위로 전달해야 한다는 것과 반환형이 void형 포인터이기 때문에 적절한 형 변환을 거쳐야 한다는 불편사항이 존재했었다.
그러나 new는 메모리 크기를 정하지 않는다. 이것이 바로 new를 사용하는 가장 도드라진 특징이다.
또한 new와 malloc의 다른 점을 하나 더 뽑으라면 '생성자 함수 호출'이라는 특징이 존재한다.
new를 통해 객체를 동적으로 생성하면서 객체의 생성자를 호출하기 때문이다.
new와 delete는 단순히 메모리 관리 이상의 일들을 수행한다. 또한 문법적으로 연산자이며 malloc과 free는 객체지향 프로그래밍을 방해하는 원인이 될 수 있다.
◎new
자료형* 이름 = new 자료형; |
int *testInt = new int;
int *testArray = new int[10];
int **testArray2 = new int*[10]; // 이중배열 동적할당
float *testFloat = new float;
double *testDouble = new double;
위와 같은 형태로 선언하면 된다.
◎delete
delete 이름 ; |
위와 같은 형태로 사용하면 되며 배열은 이름의 앞에 []를 붙여 준다.
delete[] 배열 이름; |
delete testInt;
delete []testArray;
delete testFloat;
delete testDouble;
'Study > C++ , C#' 카테고리의 다른 글
[C++] 클래스(Class)와 구조체(Struct)의 차이 (0) | 2020.01.15 |
---|---|
[C++] QueryPerformanceCounter / 프로그램 실행 시간 측정 (0) | 2020.01.15 |
[C++] 매크로 함수와 인라인 함수(Inline) (0) | 2020.01.10 |
[C++] 참조자와 함수 (0) | 2020.01.08 |
[C++] 참조자란? (Reference) (0) | 2020.01.08 |