我正在开发一个应用程序,我计划在其中使用几个 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);
我想一种更好的方法是指定自己的分配器类并跟踪其中的内存使用情况,但编写一个可能并非易事。这个估计好看吗?