코가손의 블로그

C++ 동적 할당 본문

C++/문법

C++ 동적 할당

Cogason 2021. 11. 11. 12:21
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