Heim >Backend-Entwicklung >C++ >Sind intelligente Zeiger in C mit einem erheblichen Speicher- und Zeitaufwand verbunden?
Speicher- und Zeitaufwand von Smart Pointern in C
Intelligente Zeiger, wie std::shared_ptr und std::unique_ptr in C 11, Bieten Sie eine automatische Speicherverwaltung und vereinfachen Sie die Eigentumssemantik. Einige Entwickler wundern sich jedoch möglicherweise über die möglichen Auswirkungen der Verwendung intelligenter Zeiger im Vergleich zu herkömmlichen Zeigern.
Speicheraufwand:
std::unique_ptr verursacht nur dann Speicheraufwand, wenn Es wird ein nicht trivialer Löscher bereitgestellt. Allerdings erfordert std::shared_ptr immer zusätzlichen Speicher für den Referenzzähler, wenn auch relativ wenig.
Zeitaufwand:
std::unique_ptr verursacht Zeitaufwand während Konstruktion, wenn der bereitgestellte Löscher kopiert oder der Zeiger als Null initialisiert werden muss, und während der Zerstörung, um das eigene Objekt zu zerstören.
std::shared_ptr erfährt einen Zeitaufwand, hauptsächlich während der Konstruktion, um den Referenzzähler zu erstellen, und während der Zerstörung Dekrementieren des Referenzzählers und möglicherweise Zerstörung des Objekts und Erhöhen des Referenzzählers während der Zuweisung. Darüber hinaus sind diese Inkremente/Dekremente für die Thread-Sicherheit atomar und tragen zusätzlich zum Overhead bei.
Auswirkungen auf die Leistung:
Es ist wichtig zu beachten, dass nichts davon intelligent ist Zeiger haben während der Dereferenzierung Zeitaufwand, was normalerweise der häufigste Vorgang für Zeiger ist.
Im Allgemeinen ist der mit intelligenten Zeigern verbundene Aufwand minimal und sollte die Codeleistung nicht wesentlich beeinträchtigen. Die kontinuierliche Erstellung und Zerstörung intelligenter Zeiger kann jedoch zu Leistungsengpässen führen.
Das obige ist der detaillierte Inhalt vonSind intelligente Zeiger in C mit einem erheblichen Speicher- und Zeitaufwand verbunden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!