Consumo de memória por contêineres STL
Eu estou trabalhando em um aplicativo em que estou planejando usar alguns contêineres STL. O aplicativo executará determinadas etapas se o consumo de memória atingir um limite. Para essa finalidade, preciso executar um cálculo preciso sobre a quantidade de memória usada pelos contêineres STL.
vector<string> StringList
map<string, int> mapstring
É assim que eu estou estimando a memória:
Por tamanho deStringList
, faça um loop sobre todos os elementos do vetor e continue adicionando os tamanhos de string.
string size = sizeof(string) + string.capacity()*sizeof(char)
Então, finalmente, adicione a issosizeof(StringList);
Para tamanho de mapstring, faça um loop sobre todas as chaves do contêiner e continue adicionando os tamanhos de string e, em seguida, adicione os tamanhos de int que émapstring.size()*sizeof(int)
. Então, finalmente, adicione a issosizeof(mapstring);
Eu acho que uma abordagem melhor seria especificar a própria classe de alocador e manter o controle de uso de memória dentro dela, mas escrever um pode ser não-trivial. Esta estimativa parece boa?