정적할당 vs 동적할당
정적할당
정적할당이란 프로그램에서 미리 메모리를 할당받는 방식이다. 컴파일 타임에 메모리의 크기와 위치가 결정된다.
#include <iostream>
int main() {
// 정적 할당: 배열의 크기가 고정되어 있음
int arr[5] = {1, 2, 3, 4, 5};
// 배열 요소 출력
for(int i = 0; i < 5; ++i) {
std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
}
return 0;
}
동적할당
동적할당이란 사용자의 지정에 따라 메모리를 할당받는 방식이다. 런타임에 메모리의 크기와 위치가 결정되며 필요에 따라 메모리를 할당받는 것이기 때문에 별도로 메모리 해제도 해야한다.
#include <iostream>
int main() {
// 동적 할당: 배열의 크기를 런타임에 결정
int n;
std::cout << "Enter the size of the array: ";
std::cin >> n;
// 동적으로 메모리 할당
int* arr = new int[n];
// 배열 요소 초기화 및 출력
for(int i = 0; i < n; ++i) {
arr[i] = i + 1;
std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
}
// 동적 메모리 해제
delete[] arr;
return 0;
}
할당과 해제
메모리를 할당받았으면 사용 후에 반드시 해제해야한다. 할당 키워드는 new, 해제 키워드는 delete이다. 메모리 해제의 경우, 변수 앞에 delete을 사용해도 되나 배열의 경우, 변수 앞에 []를 사용한다.
메모리할당
// 동적할당
int n;
cin >> n;
int *arr = new int[n];
메모리 해제
delete []arr; // 동적할당으로 생성 된 배열의 경우 메모리 해제