[C++] vector의 재할당

0시0분·2024년 5월 20일
0

C++

목록 보기
1/2

vector의 할당된 공간이 꽉 차면 (평균적으로) 두 배의 크기로 재할당이 일어난다는 사실은 알고 있었다.

그런데 그 과정에서 주소가 함께 변경이 된다는 점을 생각하지 못했다.
막연히 '더 넓은 공간으로 이동' 이라는 개념과
'직접적인 주소도 변경될 것' 이라는 사실이 함께 연상이 되지 않았다.

int main()
{
	vector<int> vec {1, 2, 3};
    vector<int>::iterator iter = vec.begin();
    int* numPtr = &vec[0];

    cout << "----- before reserve -----" << endl;
    cout << "numPtr : " << numPtr << endl;
    cout << "*iter : " << *iter << endl;
    cout << "&vec[0] : " << &vec[0] << endl;

    vec.reserve(vec.capacity() + 1);

    cout << "----- after reserve -----" << endl;
    cout << "numPtr : " << numPtr << endl;
    cout << "*iter : " << *iter << endl;
    cout << "&vec[0] : " << &vec[0] << endl;
}

결과
----- before reserve -----
numPtr : 0xf91940
*iter : 1
&vec[0] : 0xf91940
----- after reserve -----
numPtr : 0xf91940
*iter : 16325056
&vec[0] : 0xf91980

0개의 댓글