[C++] 동적 메모리 할당

Connected Brain·2025년 10월 21일

동적 메모리 할당

정의

  • 프로그램이 실행되는 동안에 메모리 공간을 할당해 값을 저장하는데 사용하는 것
  • 프로그램이 실행되는 동안에 어느 정도 공간을 필요로 하는지 결정 후 할당
  • 사용하지 않을 때 메모리를 직접 해제하지 않으면 Memory Leak(메모리 누수) 발생
  • 동적 할당된 메모리는 포인터에 의해서 관리되며, 해당 포인터가 실종될 경우 해당 메모리 경로에 접근할 수 없어 해제도 하지 못하는 문제가 발생

사용

선언 및 할당

class DataType {};

int main()
{
    DataType* data_ptr = new DataType();
    DataType* data_array = new DataType[10];
    return 0;
}
  • 임의의 클래스 DataType이 있을 때 new 키워드를 통해 동적으로 메모리를 할당할 수 있으며, 할당된 메모리는 data_ptr 포인터를 통해 접근할 수 있음
  • 단일 변수뿐만 아니라 배열도 선언해 할당할 수 있음

할당 해제

    delete data_ptr;
    delete[] data_array;
  • 단일 변수는 delete 키워드를 통해 해제하고 배열은 delete[]를 사용해 메모리 할당을 해제할 수 있음
class DataType
{
    public:
    int id = 1;
    string name = "Sample";
};

int main()
{
    DataType* data_ptr = new DataType();
    DataType* data_array = new DataType[10];

    delete data_ptr;
    delete[] data_array;

    cout << data_ptr->id << endl;
    return 0;
}
  • 이미 해제된 메모리에 접근하여 값을 읽고자 하면 Garbage Value를 출력하므로 사용에 주의가 필요

0개의 댓글