반응형
[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개 여유 있게 찾는 현상도 보이며
운이 좋으면 넓은 공간을 할당받아 재할당이 잘 이뤄지지 않는 경우도 있다.
반응형
'Programming > C, C++' 카테고리의 다른 글
C++ 타입(형) 변환 (Type conversion, Type Casting) (0) | 2022.12.14 |
---|---|
C++ 한글 문자, 한글 문자열 출력 wchar_t (0) | 2022.12.13 |
C++ STL List의 저장 공간 (0) | 2022.12.11 |
C++ STL 반복자(iterator) 사용법 (0) | 2022.12.11 |
C++ STL 컨테이너(Container) 사용법 (0) | 2022.12.11 |