본문 바로가기
Programming/C, C++

C++ STL 컨테이너 Vector의 재할당 확인하기

by Dev_카페인 2022. 12. 11.
반응형

[C++/STL] 컨테이너 Vector의 재할당 확인하기

 

컨테이너는 공간이 부족하면 자동으로 공간을 재할당 한다.

크기를 정해놓지 않고 사용하는 경우가 많은데 Vector에 자료가 추가되면서 재할당 하는 빈도수가 많은 것을 확인하였다.

 

#include <iostream>
#include <vector>

using namespace std;

int main()
{

	vector<int> vec;
	vector<int>::iterator vecIter;

	vec.push_back(0);
	vecIter = vec.begin();

	cout << "0번 째 반복" << endl;
	cout << *vecIter << " : " << &(*vecIter) << endl;

	for (int i = 1; i <= 10; i++)
	{
		vec.push_back(i);

		cout << i << "번 째 반복" << endl;
		for (vecIter = vec.begin(); vecIter != vec.end(); vecIter++)
		{
			cout << *vecIter << " : " << &(*vecIter) << endl;
		}
	}

	return 0;
}

실행 결과를 보면

0번 데이터를 넣을 때의 주소는 00000149BB61D950 이다.

 

하지만 데이터를 추가하고 나서 주소가 빈번하게 바뀌는 것을 알 수 있다.

1번 째 반복
0 : 00000149BB6203D0
1 : 00000149BB6203D4
2번 째 반복
0 : 00000149BB6201F0
1 : 00000149BB6201F4
2 : 00000149BB6201F8
3번 째 반복
0 : 00000149BB61FDE0
1 : 00000149BB61FDE4
2 : 00000149BB61FDE8
3 : 00000149BB61FDEC
4번 째 반복
0 : 00000149BB615A90
1 : 00000149BB615A94
2 : 00000149BB615A98
3 : 00000149BB615A9C
4 : 00000149BB615AA0

처음에 vector는 1~2개 들어갈 공간을 찾다가 공간이 부족하면면 1~2개 더 여유 있는 공간을 찾아 확보한 것을 볼 수 있다.

추가하는 횟수가 많아질 수록 공간을 6~8개 여유 있게 찾는 현상도 보이며

운이 좋으면 넓은 공간을 할당받아 재할당이 잘 이뤄지지 않는 경우도 있다.

 

반응형