메모리 동적 할당. new(), delete()
- C에서의 메모리 동적할당 malloc(), free()를 잊고 new, delete 연산자를 사용하자.
- 함수가 아닌 연산자이다. 그래서 복잡한 함수를 사용한다는 느낌은 줄어들고 편의성은 높아졌다.
- new로 생성한 변수에 접근하는 방식은 C와 동일
단일 인스턴스 동적할당, 해제
int *pData = new int; //인스턴스만 동적으로 생성
int *pNewData = new int(10); //생성과 동시에 초기화
*pData = 5; //접근방법은 C와 동일
delete pData;
delete pNewData;
배열 인스턴스 동적할당, 해제
int * arr = new int[5]; //객체를 배열형태로 동적 생성
/*값 변경 (C와 동일)*/
for(int i =0;i<5;i++)
arr[i]=(i+1) * 10;
/*출력*/
for(int i=0;i<5;i++)
cout << arr[i] <<endl;
delete[] arr; //배열 형태로 생성한 인스턴스는 반드시 delete[] 배열형태를 통해 삭제한다.
동적할당 방법
단일인스턴스 동적할당 | 배열 형태 인스턴스 동적할당 | |
생성 | 자료형 *변수명 = new 자료형; | 자료형 *변수명 = new 자료형[요소개수]; |
삭제 | delete 변수명; | delete[ ] 변수명; |
new연산자와 malloc()연산자의 차이
- new연산자는 malloc()과 달리 메모리의 크기를 정하지 않는다. (sizeof 하지 않아도 된다는 것)
- new연산자는 객체의 생성자를 호출한다. (delete연산자는 객체의 소멸자를 호출한다)
C++ 개념 더보기
'◼️C++' 카테고리의 다른 글
[C++] 범위 기반 for 문 for(auto n : nList) (0) | 2023.08.31 |
---|---|
[C++] 참조자 형식 int &n = a; (0) | 2023.08.31 |
[C++] auto 자료형 (0) | 2023.08.31 |
[C++] 변수 선언 및 정의 (0) | 2023.08.31 |
[C++] 자료형 (0) | 2023.08.31 |