▶ 동적 메모리 할당
▷ 정적 할당 :변수 선언을 통해 메모리 할당
- 많은 양의 메모리는 배열 선언을 통해 할당
▷ 동적 할당 :컴퓨터 프로그래밍에서 실행시간 동안 사용할 메모리 공간을 할당하는 것
- 필요한 양이 예측되지 않은 경우, 필요한 메모리를 프로그램을 작성하는 단계에서 모두 선언하는 것은 불가능
- 메모리 공간을 사용자가 필요한 만큼 사용하기 위해 사용
- 실행 중에 힙 메모리에서 할당
- 힙(heap)으로부터 할당 (heap :운영체제가 프로세스(프로그램)의 실행을 시작 시킬 때 동적 할당 공간으로 준 메모리 공간)
▷ C 언어의 메모리 할당 : malloc() / free() 라이브러리 함수 사용
▷ C++언어의 메모리 할당/반환
● new 연산자 :기본 타입 메모리 할당, 배열 할당, 객체 할당, 객체 배열 할당
- 객체의 동적 생성 :힙 메모리로부터 객체를 위한 메모리 할당 요청
- 객체 할당 시 생성자 호출
● delete 연산자 : new로 할당 받은 메모리를 반환
- 객체의 동적 소멸 :소멸자 호출 뒤 객체를 힙에 반환
▶ new와 delete 연산자
▶ 기본타입의 메모리 동적 할당 및 반환
예제) 정수형 공간의 동적 활당 및 봔환
▷ ※ 기본타입의 delete 사용 시 주의 사항 ※
- 적절치 못한 포인터로 delete하면 실행 시간 오류 발생
(1) 동적으로 할당 받지 않은 메모리 반환 - 오류발생
(2) 동일한 메모리 두 번 반환 - 오류발생
▶ 배열의 동적 생성 및 반환
▷ new / delete 연산자의 사용 형식
예제) 정수형 배열의 동적 할당 및 반환
▷ ※ 배열의 동적 할당 메모리 초기화 및 delete시 유의사항 ※
(1) 동적 할당 메모리 초기화
● 동적 할당 시 초기화
● 배열은 동적 할당시 초기화 불가능
(2) delete [] 생략
- 컴파일 오류는 아니지만 비정상적인 반환
▶ 객체의 동적 생성 및 반환
예제) Circle 객체의 동적 생성 및 반환
예제) Circle 객체의 동적 생성 및 반환 응용
▶ 객체 배열의 동적 생성 및 반환
▷ 동적으로 생성된 배열도 보통 배열처럼 사용
▷ 포인터로 배열 접근
▷ 배열 소멸
예제)Circle 배열의 동적 생성 및 반환
예제) 객체 배열의 동적 생성과 반환 응용
▶ 동적 메모리 할당과 메모리 누수
참고문헌: 황기태,[명품 C++ Programming] 생능출판(2017), 671P
'[C++]' 카테고리의 다른 글
[C++] 문자열 (1) | 2022.10.15 |
---|---|
[C++] this 포인터 (0) | 2022.10.14 |
[C++] 객체 배열 (0) | 2022.10.08 |
[C++] 객체 포인터 (0) | 2022.10.05 |
[C++] C++ 프로그램 작성법 (0) | 2022.10.05 |
댓글