Smartpointer sind eine Form der Ressourcenverwaltung. Es gibt andere, die geeigneter sind. Zum Beispiel ist für einen Nur-Speicher-Graph von Objekten (dh, keines der Objekte enthält eine Nicht-Speicher-Ressource irgendeiner Form) die Verwendung von Zuweisungen in eine Arena und das Loslassen der Arena effektiver: Sie hat einen viel kleineren Overhead und ist wesentlich schneller zu veröffentlichen, vor allem wenn die Objekte nicht unbedingt im Cache heiß sind. Die Objektgraphen, die in der Arena verwaltet werden, werden mit rohen Zeigern verknüpft.
Intelligente Zeiger sind eines von vielen Werkzeugen für das Ressourcenmanagement. Sie neigen dazu, von Menschen überstrapaziert zu werden, die andere Werkzeuge nicht kennen. Natürlich ist das ein übliches Muster: Für dich, der nur einen Hammer führt, sieht alles wie ein Nagel aus!
Nun, manchmal brauchen Sie eine Variable, die * nicht * löscht, wenn sie den Gültigkeitsbereich verlässt. –
Nun, Sie müssen natürlich rohe Zeiger verwenden, um intelligente Zeiger zu implementieren. –