Nicht-atomare intelligente Zeiger: Erkundung der Abwesenheit im C-Standard
Im Bereich der C-Speicherverwaltung ist der std::shared_ptr gilt aufgrund seiner atomaren Operationen als außergewöhnlich intelligenter Zeiger. Dies wirft die Frage auf: Warum gibt es in der Standardspeicherbibliothek kein nicht-atomares Gegenstück?
1. Nicht-atomare Alternativen zu std::shared_ptr
Während std::shared_ptr atomares Verhalten bietet, rechtfertigen einige Szenarien einen solchen Overhead möglicherweise nicht. Um dieses Problem zu lösen, sind externe Bibliotheken entstanden, die nicht-atomare intelligente Zeiger mit Referenzzählung bereitstellen. Der Standard-Speicherbibliothek selbst fehlen jedoch solche Angebote.
2. Das Fehlen in C 11: Gründe und Debatte
Trotz des wahrgenommenen Nutzens wurde ein Vorschlag für eine nicht-atomare Version von std::shared_ptr während des C 11-Standardisierungsprozesses abgelehnt. Mehrere Argumente haben diese Entscheidung vorangetrieben:
Schlussfolgerung
Das Fehlen eines nicht-atomaren std::shared_ptr in Der C-Standard ist das Ergebnis einer bewussten Entscheidung, die auf Bedenken hinsichtlich möglichem Missbrauch, Konsistenz, Leistung und Anpassungsflexibilität basiert. Während externe Bibliotheken solche Alternativen bieten können, hat der Standard selbst den Vorteilen eines universellen, atomaren Smart Pointers für die Speicherverwaltung Priorität eingeräumt.
Das obige ist der detaillierte Inhalt vonWarum enthält der C-Standard kein nicht-atomares „std::shared_ptr'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!