코가손의 블로그
C++ 동적 할당 본문
int main()
{
int user[500 * 1000000];
}
코드가 실행되면 main함수의 스택 프레임의 크기는 int x 50억 만큼의 크기 이상을 가져 stack overflow를 일으킨다.
온라인 서비스를 제공한다고 가정했을 때
1명의 user가 접속했다면 1명분 만큼
5만명이 접속했다면 5만명 만큼 할당하는 유연한 메모리 관리가 필요하다.
이 때, 메모리를 프로그램 내에서 동적으로 할당하는 방법을 사용한다.
C++에서는 기본적으로 CRT(C런타임 라이브러리)의 힙 관리자를 통해 힙 영역을 사용하게 된다.
원한다면 직접 API를 통해 힙을 생성하고 관리할 수도 있다.
malloc
void* pointer = malloc(sizeof(Monster)); // Monster객체 크기만큼 메모리 할당
Monster* m1 = (Monster*)pointer;
free(pointer); // free 하지 않으면 메모리 누수 발생
malloc/free는 함수이다.
new
Monster* m2 = new Monster;
delete m2;
Monster* m3 = new Monster[5];
delete[] m3;
new/delete는 연산자이다.
생성 타입이 클래스일 경우 생성자/소멸자를 호출해준다.
'C++ > 문법' 카테고리의 다른 글
C++ 캐스팅(static_cast, dynamic_cast, const_cast, reinterpret_cast) (0) | 2021.11.11 |
---|---|
C++ 문자와 문자열 (0) | 2021.11.11 |
C++ 연산자 오버로딩 (0) | 2021.11.11 |
C++ 초기화 리스트 (0) | 2021.11.11 |
C++ 객체 생성 (0) | 2021.11.11 |
Comments