-
[C++] 생성자 안에서의 동적 메모리 할당C++/class 2022. 6. 28. 23:30
프로그램이 메모리를 할당받는 방법
1. 정적 메모리 할당
- 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는 것
- 메모리의 크기는 프로그램이 시작하기 전에 결정되며, 프로그램의 수행 도중에 그 크기가 변경될 수 없음
- ex)
int i, j;
int buffer[80];
char name [] = "data structure";
2. 동적 메모리 할당- 프로그램이 실행 도중에 동적으로 메모리를 할당받는 것
- 프로그램에서 필요한 만큼 메모리를 할당받아서 사용하고, 사용이 끝나면 시스템에 메모리를 반납함
동적 메모리 할당 방법
1. 동적 메모리 할당
- new 키워드를 이용해서 동적으로 메모리를 할당함
- new가 반환하는 것은 할당된 메모리의 주소
- 반환값은 포인터에 저장해야 함
ex) int *pi = new int;
2. 동적 메모리 사용(오직 포인터 사용)
*pi = 100;
3. 동적 메모리 반납
- delete 키워드 사용
ex) delete pi;
예시 코드
#include <iostream> using namespace std; // Step1. 클래스 생성 class Car{ int speed; int gear; char *color; public: // 생성자(멤버 변수 초기화) Car(int s, int g, const char *c){ speed = s; gear = g; //동적 메모리 할당(문자 배열) color = new char[strlen(c)+1]; strcpy(color, c); } // 동적 할당 -> 소멸자 생성 ~Car(){ delete [] color; } void print(){ cout << speed << gear << color; } }; int main(){ // step2. 객체 생성 Car myCar(0, 1, "grey"); // step3. 메세징 myCar.print(); return 0; }
Key Point
Car(int s, int g, const char *c) { //const를 붙이지 않으면 컴파일 오류 발생!!
speed = s;
gear = g;//동적 메모리 할당(문자 배열)
color = new char[strlen(c)+1];
strcpy(color, c);
}
'C++ > class' 카테고리의 다른 글
[C++] ⭐️복사 생성자가 호출되는 경우 (0) 2022.07.01 [C++] 객체 생성과 메세징하는 다양한 방법 (0) 2022.06.29 [C++] 클래스에 대한 이해(Car.cpp) (0) 2022.06.24 [C++] 함수가 여러 개의 값을 반환해야하는 경우 (0) 2022.06.15 [C++] 외부 파일에서 데이터 읽어오기(fstream, infile) (0) 2022.06.14