Arbeit für willkürliche Bereinigung beim Herunterfahren? " />
Entgegen den Erwartungen kann std::shared_ptr verwendet werden, um beim Herunterfahren eine beliebige Bereinigung durchzuführen, selbst wenn std::shared_ptr Typlöschung Wenn ein shared_ptr erstellt wird, kapselt es den eigenen Zeiger zusammen mit einer Löschfunktion ruft diese Funktion normalerweise standardmäßig auf, kann jedoch über den Konstruktor anders konfiguriert werden. Bei der Zerstörung des shared_ptr wird der gespeicherte Löscher aufgerufen, der die Bereinigung des Objekts auslöst. Um die Typlöschung zu verstehen, Betrachten Sie das folgende vereinfachte Beispiel mit std::function:template
Hier kann my_unique_ptr
std::shared_ptr und Typlöschung
Geteilte Zeiger verwenden auch Typlöschung. Beim Kopieren oder standardmäßigen Erstellen eines shared_ptr von einem anderen bleiben die Löschinformationen erhalten. Dies bedeutet, dass ein shared_ptr
Gemäß dem C-Standard ist dieses Verhalten garantiert. Implementierungen können die Interna von std::shared_ptr nicht in einer Weise ändern, die diese Funktionalität beeinträchtigen würde. Daher ist die Verwendung von std::shared_ptr
Das obige ist der detaillierte Inhalt vonWie funktioniert std::shared_ptr