Ich habe eine Anwendung in C++, für die ich grundlegende Speicherprofilierungsfunktionen implementieren möchte.Programmieren einer grundlegenden speicherinternen Profilerstellung: Zählen von erstellten Zeigern?
Für die wichtigsten und speicherintensivsten Klassen, habe ich in den Konstruktoren, Kopierkonstruktoren und Destruktoren, einige Code, der berechnet und speichert die Menge an Speicher von jeder Instanz der Klasse verwendet (der Code läuft nur, wenn ein Makro # MEMPROFILE definiert Etwas wie:.
class MyClass
{
MyClass(){
#ifdef MEMPROFILE
calcAndSaveMemUsage();
#endif
}
...
}
Analog der destructor die Zähler entsprechend aktualisiert, die Art und Weise, wann immer das Makro für die Profilerstellung definiert und eine neue Instanz wird wie MyClass obj
, Speicherverbrauch info erstellt wird, automatisch verarbeitet
Gibt es Möglichkeiten zu autom Machen Sie eine ähnliche Sache wie Zeiger - entweder im Allgemeinen oder die Zeiger dieser bestimmten Klasse? Zum Beispiel, um einen Zähler jedes Mal automatisch zu erhöhen, wenn ein Zeiger erstellt wird?
Ich wäre daran interessiert, mehr über alle Möglichkeiten zu lernen, sei es mit Überladung, Verpackung oder Instrumentierung.
PS: Ich kenne externe Tools, die mir Profilspeicher helfen würde. Ich interessiere mich für das Lernen der oben genannten Sache.
Wie überladen Sie die 'neuen' und' neuen [] 'Operatoren? –
Vielleicht nicht, was Sie suchen, aber Sie könnten 'std :: shared_ptr' verwenden und dann seine' use_count() 'Methode – aguadoe