Betrachten Sie das folgende erfundene Beispiel:Dynamisch zugeordnete Objekte in statischer Map. Löschen notwendig?
class AllocatedClass {
public:
AllocatedClass() : dummy(0) {}
private:
int dummy;
};
class AllocatingClass {
public:
AllocatingClass() : list() {}
~AllocatingClass() {
// CANNOT delete the elements in list here because there may
// be more than on instance of AllocatingClass sharing the same
// static list
}
AddNewObject() {
list.push_back(new AllocatedClass());
}
private:
static std::vector<AllocatedClass*> list;
};
In Implementierung Datei
std::vector<AllocatedClass*> AllocatingClass::list;
Lässt man einmal beiseite, ob mehrere Instanzen einer Klasse eine gute Idee, eine Liste der dynamisch zugewiesenen Objekte teilen sollten, ist Gibt es eine Möglichkeit, diese neuen AllocatedClass-Objekte am Ende des Programms zu bereinigen? Ist es wichtig, dass diese nie gelöscht werden, wenn ich sie nicht bis zum Anwendungsende löschen möchte?
Was ist mit der Verwendung von [std :: shared_ptr] (http://en.cppreference.com/w/cpp/memory/shared_ptr)? – WhiZTiM
Jedes 'new()' muss sehen, dass es 'delete' entspricht. –
Dieser Code ist einfach nicht kompilierbar. VTC. – SergeyA