C++ 동적메모리 할당으로 런타임메모리 관리
개요
C++ 배열을 이용한 동적메모리 할당 (Dynamic Allocation) 구현 예제
입니다.
런타임에 메모리를 어떻게 관리하는지 공부해 봅시다.
최초 5개의 정수형 배열을 Heap 영역에 동적할당하고, 저장공간이 부족한 경우 2배로 배열의 크기를 늘려가는 방식입니다.
![]() |
[배열의 동적할당] |
동작 순서
1. 처음 배열 5개를 생성하고, 데이터를 삽입
2. 데이터가 5개를 초과하면 새로운 배열을 2배 크기(10개)로 동적할당
3. 기존 배열의 데이터를 새 배열로 복사 후 신규 데이터는 새 배열에 저장
4. 기존 배열 (5개) 을 삭제하고 새 배열의 주소를 포인터에 저장
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #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; } |
감사합니다.
댓글
댓글 쓰기