C++에서 STL을 쓰는데 메모리초과가 나길래 STL에서 메모리가 어느정도 할당되는지 궁금해졌음


예를 들어서 이렇게 할당을 하면


vector<int> v;

deque<int> dq;

map<int, int> mp;

set<int> s;

string st;

queue<int> q;


를 한 후에 sizeof(v), sizeof(dq), sizeof(mp), ... 를 했더니


vector : 16

deque : 20

map : 12

set : 12

string : 28

queue : 20


이렇게 나오더라고


근데 여기서 궁금한게 vector는 그럼 1개를 push_back 하면 16바이트, 2개를 push_back 하면 32바이트, ... 이렇게 되는건가?


string의 경우에는 "a" = 28바이트, "ab" = 56바이트, ... 이렇게 되는 형태라고 생각이 드는데


뭔가 너무 메모리를 많이 잡아먹는거같아서 이해가 잘 안되네 이거 좀 설명해줄사람 있을까...?