私はいくつかの 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);
より良いアプローチは、独自のアロケーター クラスを指定し、その中のメモリ使用量を追跡することだと思いますが、それを書くのは簡単ではありません。この見積もりはよさそうですか?