Ich denke, das Konzept eines Zeigers, der nach sich selbst wie std::shared_ptr
aufräumt, ist cool, aber ich frage mich, ob es einen besseren Smart Pointer von Drittanbietern da draußen gibt.Smarter Smart Pointer
Das Problem mit der shared_ptr
ist die von rekursiven Referenzen. Dies geschieht, wenn Sie so etwas wie dieses:
class A{
public:
std::shared_ptr<A> other;
A() { }
};
//Later
std::shared_ptr<A> a = std::make_shared<A>();
std::shared_ptr<A> b = std::make_shared<A>();
a->other = b; //Memory leak
b->other = a; //Memory leak
Gibt es ein intelligenter Smart-Pointer aus, dass es spüren kann, wenn ich einen schwachen Zeiger verwendet haben sollte und leckt nicht (oder zumindest gibt eine Warnung aus)? (Nach einer kurzen Google-Suche kann ich nichts finden)
Darf ich fragen, warum tun Sie das? Oder ist das nur ein einfaches Beispiel für etwas Komplizierteres? In diesem Beispiel missbrauchen Sie Smart Pointer. Du würdest 'delete this' nicht in einen Destruktor setzen. –
Ihre Klasse 'A' kompiliert nicht. –
'A(): selbst (* dies) {}' Huh? Was soll das tun? Was versuchst du zu erreichen? –