C++ 동적메모리 할당으로 런타임메모리 관리
개요
C++ 배열을 이용한 동적메모리 할당 (Dynamic Allocation) 구현 예제
입니다.
런타임에 메모리를 어떻게 관리하는지 공부해 봅시다.
최초 5개의 정수형 배열을 Heap 영역에 동적할당하고, 저장공간이 부족한 경우 2배로 배열의 크기를 늘려가는 방식입니다.
[배열의 동적할당] |
동작 순서
1. 처음 배열 5개를 생성하고, 데이터를 삽입
2. 데이터가 5개를 초과하면 새로운 배열을 2배 크기(10개)로 동적할당
3. 기존 배열의 데이터를 새 배열로 복사 후 신규 데이터는 새 배열에 저장
4. 기존 배열 (5개) 을 삭제하고 새 배열의 주소를 포인터에 저장
소스코드
#include <iostream> #include <cstring> using namespace std; int main() { int size = 5; int pos = 0; int *p = new int[size]; memset(p, 0, sizeof(int)*size); while (true) { cout << "Input number(Exit:0): "; int n; cin >> n; if (n==0) break; if(pos>=size) { size *= 2; int *p2 = new int[size]; memset(p2, 0, sizeof(int)*size); for(int i=0; i<size/2; i++) p2[i] = p[i]; delete[] p; p = p2; } p[pos] = n; pos++; cout << "Size:" << size << '\n'; for(int i=0; i<size; i++) cout << p[i] << ' '; cout << '\n'; } delete[] p; return 0; }
감사합니다.
댓글
댓글 쓰기