Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 가변 길이 배열 구현하기: 동적 메모리 할당 완벽 가이드

가변 길이 배열(Variable Length Array)은 사용자의 필요에 따라 크기를 자유롭게 지정할 수 있는 배열입니다. 즉, 컴파일 시점에 크기가 고정되는 일반 배열과 달리, 실행 시점에 원하는 크기를 유동적으로 결정할 수 있습니다.

C++에서는 new 연산자를 활용한 동적 메모리 할당을 통해 가변 길이 배열을 손쉽게 구현할 수 있습니다. 아래는 그 구현 예제입니다.

예제 코드

#include <iostream>
#include <string>

using namespace std;
int main() {
    int *array, size;
    cout<<"Enter size of array: "<<endl;
    cin>>size;
    array = new int [size];
    cout<<"Enter array elements: "<<endl;

    for (int i = 0; i < size; i++)
    cin>>array[i];
    cout<<"The array elements are: ";

    for(int i = 0; i < size; i++)
    cout<<array[i]<<" ";
    cout<<endl;
    delete []array;
    return 0;
}

실행 결과

Enter size of array: 10
Enter array elements: 11 54 7 87 90 2 56 12 36 80
The array elements are: 11 54 7 87 90 2 56 12 36 80

코드 설명

위 프로그램은 다음과 같은 순서로 동작합니다.

1. 배열 초기화 및 사용자 입력 받기

먼저 정수형 포인터로 배열을 선언해 초기화한 뒤, 사용자로부터 배열의 크기와 각 요소의 값을 입력받습니다.

cout<<"Enter size of array: "<<endl;
cin>>size;

array = new int [size];

cout<<"Enter array elements: "<<endl;

for (int i = 0; i < size; i++)
cin>>array[i];

여기서 핵심은 new int[size] 부분입니다. 사용자가 입력한 크기만큼 힙(heap) 영역에 메모리를 동적으로 할당하며, for 반복문을 통해 각 인덱스에 값을 차례대로 저장합니다.

2. 배열 출력 및 메모리 해제

입력이 완료되면 배열의 모든 요소를 화면에 출력하고, delete[]를 사용해 동적으로 할당된 메모리를 해제합니다.

cout<<"The array elements are: ";
for(int i = 0; i < size; i++)
cout<<array[i]<<" ";
cout<<endl;
delete []array;

핵심 포인트 정리

  • 동적 할당: new 연산자를 사용하면 실행 중에 배열 크기를 결정할 수 있습니다.
  • 메모리 해제 필수: delete[]로 할당받은 메모리를 반드시 반환해야 메모리 누수(memory leak)를 방지할 수 있습니다.
  • 힙 영역 활용: 동적 배열은 스택이 아닌 힙에 생성되므로, 함수가 종료된 후에도 필요하다면 포인터를 통해 접근할 수 있습니다.

이처럼 C++의 동적 메모리 할당을 활용하면 고정된 크기의 제약 없이, 상황에 맞는 유연한 배열을 구현할 수 있습니다.