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

C++에서 new 키워드를 사용해 정수 동적 배열 생성하기

C++에서는 new 키워드를 사용해 런타임 시점에 동적 배열을 생성할 수 있으며, 더 이상 필요하지 않은 메모리는 delete 키워드로 해제할 수 있습니다. 이 기법은 프로그램 실행 전에 배열의 크기를 알 수 없을 때 특히 유용합니다.

간단한 예제를 통해 살펴보겠습니다.

예제 코드

#include<iostream>
using namespace std;
int main() {
   int i,n;
   cout<<"Enter total number of elements:"<<"\n";
   cin>>n;
   int *a = new int(n);
   cout<<"Enter "<<n<<" elements"<<endl;
   for(i = 0;i<n;i++) {
      cin>>a[i];
   }
   cout<<"Entered elements are: ";
   for(i = 0;i<n;i++) {
      cout<<a[i]<<" ";
   }
   cout<<endl;
   delete (a);
   return 0;
}

실행 결과

Enter total number of elements:7
Enter 7 elements
1 2 3 4 5 6 7
Entered elements are: 1 2 3 4 5 6 7

코드 설명

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

  1. 사용자에게 저장할 요소의 총 개수를 입력받습니다.
  2. int *a = new int(n); 구문으로 new 키워드를 사용해 메모리를 동적으로 할당합니다.
  3. 반복문으로 n개의 값을 입력받아 배열에 저장한 뒤, 다시 반복문을 통해 모든 값을 출력합니다.
  4. delete(a); 호출로 할당된 메모리를 해제합니다.

참고: 올바른 동적 배열 할당 문법

C++에서 진정한 의미의 동적 배열을 할당하려면 대괄호를 사용하는 new int[n] 문법이 표준입니다. 참고로 new int(n)은 크기가 아니라 값 n으로 초기화된 단일 정수 하나를 할당하는 구문입니다. 실무 코드에서는 다음과 같이 작성하는 것이 안전합니다.

int *a = new int[n]; // n개의 정수 배열 동적 할당
// ... 배열 사용 ...
delete[] a;          // 배열 메모리 해제

배열 형태로 할당한 경우에는 반드시 delete[]를 사용해야 합니다. 일반 변수용 delete와 혼용하면 미정의 동작(undefined behavior)이 발생할 수 있으므로 주의해야 합니다.