최적화 2

[C++ 자료구조] 벡터의 동적할당 시 메모리 확장 방식

벡터는 push_back같이 메모리 공간이 더 필요할 때, 해당 공간만큼만 늘리지 않습니다. 예를들어 vector v가있다고 했을 때, 메모리를 차지하는 첫 공간은 0byte입니다. 하지만 필요하면 1byte -> 2bytes-> 4bytes->8bytes->16bytes이렇게 제곱으로 늘어납니다. 왜냐하면 공간이 필요할 때 마다 현재 차지하고 있는 공간의 두배를 할당해버리기 때문이죠. 다음 두 코드를 비교해 봅시다.//첫번째 케이스vector v;for(int i = 0 ; i v(100000,0); 두번째 케이스는 int가 4bytes이고 100000번 할당하니 그냥 4*100000 bytes만 필요로합니다.하지만 첫번째 케이스에서는 필요할때마다 벡터의 공간을 늘려주는 방식이니 최악의 경우 두배로 메..

[메모리 관리] -고정형or 가변형 벡터의 힙과 스택 메모리 할당

고정형 벡터 vs. 가변형 벡터 1. 고정형 벡터int main(){ for (int i = 0; i  vec3는 고정형 벡터이며, x, y, z 좌표를 가지는 3D 벡터입니다. 반복문 내에서 선언된 vec3 v는 지역변수로 스택에 할당됩니다. 반복문이 한번 반복할 때마다 v는 해제되고, 새로운 객체가 생성되므로 메모리 관리가 안전하고 빠릅니다.  2. 가변형 벡터반면, 가변형 벡터인 std::vector의 경우:int main(){ for (int i = 0; i v(1000); }} 여기서 std::vector v는 스택에 생성되지만, 벡터의 실제 데이터는 힙에 할당됩니다. 반복문을 빠져나올 때마다 힙 메모리가 해제되므로 성능 저하가 발생할 수 있습니다. 여기서 어떻게 하면 성능 저하를 막을수..