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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage