Zużycie pamięci przez kontenery STL
Pracuję nad aplikacją, w której zamierzam użyć kilku kontenerów STL. Aplikacja podejmie pewne kroki, jeśli zużycie pamięci osiągnie próg. W tym celu muszę wykonać dokładne obliczenia dotyczące ilości pamięci używanej przez kontenery STL.
vector<string> StringList
map<string, int> mapstring
Tak oceniam pamięć:
Dla rozmiaruStringList
, zapętl wszystkie elementy wektora i kontynuuj dodawanie rozmiarów łańcucha.
string size = sizeof(string) + string.capacity()*sizeof(char)
Następnie dodaj do tegosizeof(StringList);
Dla rozmiaru odwzorowania zapętl wszystkie klucze kontenera i kontynuuj dodawanie rozmiarów ciągu, a następnie dodaj rozmiary int, które jestmapstring.size()*sizeof(int)
. Następnie dodaj do tegosizeof(mapstring);
Myślę, że lepszym podejściem byłoby określenie własnej klasy alokatora i śledzenie użycia pamięci wewnątrz niego, ale pisanie jednej może być nietrywialne. Czy ta ocena wygląda dobrze?