본문 바로가기
[ C++ ]/- C++ 문법정리

C++ 06 [메모리 할당]

by MRG 2023. 3. 24.
728x90
반응형

https://ko.wikipedia.org/wiki/%EB%8F%99%EC%A0%81_%EB%A9%94%EB%AA%A8%EB%A6%AC_%ED%95%A0%EB%8B%B9

 

동적 메모리 할당 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 동적 메모리 할당 또는 메모리 동적 할당은 컴퓨터 프로그래밍에서 실행 시간 동안 사용할 메모리 공간을 할당하는 것을 말한다. 사용이 끝나면 운영체제가 쓸

ko.wikipedia.org

 

▣ 메모리 할당 : 필요한 메모리를 힙이라는 메모리 영역에서 가져와 사용하는 것

▣ 동적메모리 : 상황에 따라 원하는 크기만큼의 메모리가 할당 가능

▣ 정적메모리 : 메모리의 크기가 코딩되어 있어서 나중에 조절할 수 없다.

▣ 메모리 할당 방법 : 데이터타입 *포인터이름 = new 데이터타입;

▣ 할당받은 메모리 반환 : delete 포인터이름;

▣ 동적 할당 메모리 초기화 : 데이터타입 *포인터이름 = new 데이터타입(초기값);

▣ 배열 메모리 할당 : 데이터타입 *포인터이름 = new 데이터타입 [크기];

▣ 배열 메모리 반환 : delete []포인터이름;

 

▣ 객체메모리 할당 : 클래스이름 *포인터이름 = new 클래스이름;

▣ 객체메모리 할당 및 초기화 : 클래스이름 *포인터이름 = new 클래스이름(매개변수값);

▣ Test* p = new Test는 매개변수가 없는 생성자를 호출

▣ Test* p = new Test(10)는 매개변수가 있는 생성자를 호출

▣ delete p; 는 메모리를 반환 돌려준다. 먼저 반환한 객체부터 소멸자 호출

 

▣ 객체 배열 메모리 할당 : 클래스이름 *포인터이름 = new 클래스이름[크기];

▣ 객체메모리 할당 및 초기화 : 클래스이름 *포인터이름 = new 클래스이름[크기]{ 클래스이름(초기값), 클래스이름() };

▣ Test* p = new Test[2]는 두개의 객체가 매개변수가 없는 생성자를 호출

▣ Test* p = new Test[2] { Test(10), Test() };
Test(10)는 매개변수가 있는 생성자를 호출, Test()는 매개변수가 없는 생성자 호출
Test()는 객체 배열 메모리 할당 시에만 사용 가능

▣ delete [] p; 는 메모리를 반환 돌려준다. 먼저 반환한 객체부터 소멸자 호출

▣ 힙(heap) : 프로그램이 실행 중 new 키워드를 이용해서 동적으로 메모리 할당받을 수 있는 메모리 영역

▣ 메모리 누수(memory leak) : 동적으로 할당받은 메모리 주소를 반환하지 않을 경우

728x90
반응형

댓글