공부/C++

벡터에서 push_back을 이용할 때 메모리가 왜 2배씩 늘어나는가?

셩잇님 2023. 2. 7. 13:01
반응형

 

 

push_back 메서드를 사용할 때 벡터의 메모리 사용량이 두 배가 되는 이유는 벡터가 사용하는 동적 메모리 할당 전략 때문입니다.

벡터는 동적 메모리 할당을 사용합니다. 즉, 런타임 중에 필요에 따라 메모리를 할당합니다. push_back 메서드는 벡터의 끝에 새 요소를 추가하고, 벡터의 현재 메모리 용량이 새 요소를 저장할 만큼 크지 않을 경우 벡터는 더 많은 메모리를 할당해야 합니다.

벡터 요소가 인접한 메모리 블록에 저장되도록 하기 위해 벡터는 일반적으로 각각의 새 요소에 충분한 메모리를 할당하는 대신 더 큰 청크로 메모리를 할당합니다. 이는 성능 면에서 비용이 많이 들 수 있는 메모리 할당 및 할당 해제 횟수를 줄이기 위해 수행됩니다.

벡터의 메모리가 부족하면 일반적으로 메모리 용량을 두 배로 늘려 더 많은 메모리를 할당합니다. 이렇게 하면 메모리를 너무 자주 할당하지 않고도 벡터가 향후 push_back 작업을 수용할 수 있습니다. 더블링 전략은 메모리 할당에 필요한 시간과 메모리 사용량 간의 균형을 달성하는 데 사용됩니다. 벡터의 크기는 매번 두 배가 되므로 재할당 횟수는 요소 수에 대수적이므로 시간 복잡도 측면에서 효율적입니다.

요약하면 벡터에서 push_back 메서드를 사용할 때 효율적인 동적 메모리 할당을 보장하고 메모리 할당 및 할당 해제 횟수를 줄이기 위해 메모리 사용량이 두 배가 될 수 있습니다.

 

 

 

반응형