728x90
- 동적 할당
- 동적 할당은 프로그램 실행 도중에(런타임 중) 사용자가 원하는 만큼 메모리를 요청할 수 있도록 한다.
이때 사용하는 메모리 영역은 스택/데이터/ROM/힙 영역 중 힙(Heap) 메모리 영역이다.
동적 할당은 원하는 메모리 크기를 힙 메모리 영역에서 할당하고 할당된 첫 번째 주소를 받아와서 어떤 목적으로 사용할지 포인터 캐스팅을 하면 된다.
- 동적 할당은 프로그램 실행 도중에(런타임 중) 사용자가 원하는 만큼 메모리를 요청할 수 있도록 한다.
// 1. 힙 영역에 100 byte 만큼의 메모리를 할당
// 2. 할당된 시작 주소를 pInt 포인터 변수에 저장
int* pInt = (int*)malloc(100);
-
- (int*)와 같이 강제 포인터 캐스팅을 한 이유
malloc(memory allocator)은 반환 타입이 void 포인터의 함수이다. void 포인터는 주소만을 저장하기 위한 목적으로만 사용되어 실제 원형 데이터를 분석할 순 없다. 따라서 원형을 어떻게 볼 지 캐스팅을 통해 결정해 준 것이다. - 동적 할당에서 중요한 개념!
1. 런타임 중에 대응 가능하다.
2. 사용자가 직접 관리해야 한다. (해제)
- 메모리 할당에 대한 해제를 안 하고 프로그램을 종료하면, 메모리가 계속 사용된다고 체크되어 "메모리 누수"가 발생할 수 있으며 프로그램이 강제 종료되는 경우도 있다. - 메모리 해제 방법
- (int*)와 같이 강제 포인터 캐스팅을 한 이유
int* pInt = (int*)malloc(100); // 메모리 할당
if(nullptr != pInt)
{
free(pInt); // 메모리 해제
}
728x90
'📚책읽기' 카테고리의 다른 글
[C++] 인라인 함수, 참조 변수 (0) | 2023.01.24 |
---|---|
[C++] 가변배열(동적할당 활용) (0) | 2022.04.04 |
[C++] 구조체와 포인터 (0) | 2022.04.04 |
[C++] 문자열 함수(wcslen, wcscat_s, wcscmp), 함수 구현 과제 (0) | 2022.03.13 |
[C++] 문자, 문자열(char, wchar_t, const wchar_t*) (0) | 2022.03.09 |