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;
}
감사합니다.

댓글
댓글 쓰기