Speicherverbrauch durch AWL-Container
Ich arbeite an einer Anwendung, in der ich einige STL-Container verwenden möchte. Die Anwendung unternimmt bestimmte Schritte, wenn der Speicherverbrauch einen Schwellenwert erreicht. Zu diesem Zweck muss ich eine nahezu genaue Berechnung durchführen, wie viel Speicher von STL-Containern verwendet wird.
vector<string> StringList
map<string, int> mapstring
So schätze ich den Speicher:
Für die Größe vonStringList
, ziehen Sie eine Schleife über alle Elemente des Vektors und fügen Sie die Zeichenfolgengrößen hinzu.
string size = sizeof(string) + string.capacity()*sizeof(char)
Dann füge endlich hinzusizeof(StringList);
Um die Größe des Mapstrings zu bestimmen, ziehen Sie eine Schleife über alle Schlüssel des Containers und fügen Sie die Stringgrößen hinzu. Fügen Sie dann die Größen von int hinzumapstring.size()*sizeof(int)
. Dann füge endlich hinzusizeof(mapstring);
Ich denke, ein besserer Ansatz wäre es, eine eigene Allokator-Klasse anzugeben und die Speichernutzung darin zu verfolgen, aber das Schreiben einer solchen könnte nicht trivial sein. Sieht diese Schätzung gut aus?