Потребление памяти контейнерами STL
Я работаю над приложением, в котором планирую использовать пару контейнеров STL. Приложение предпримет определенные шаги, если потребление памяти достигнет порога. Для этого мне нужно выполнить почти точный расчет того, сколько памяти используется контейнерами STL.
vector<string> StringList
map<string, int> mapstring
Вот как я оцениваю память:
Для размераStringList
, переберите все элементы вектора и продолжайте добавлять размеры строк.
string size = sizeof(string) + string.capacity()*sizeof(char)
Тогда, наконец, добавьте к этомуsizeof(StringList);
Для размера mapstring, обведите все ключи контейнера и продолжайте добавлять размеры строк, а затем добавьте размеры int, которыеmapstring.size()*sizeof(int)
, Тогда, наконец, добавьте к этомуsizeof(mapstring);
Я предполагаю, что лучшим подходом будет указание собственного класса-распределителя и отслеживание использования памяти внутри него, но написание такого может быть нетривиальным. Эта оценка выглядит хорошо?