Heim > Backend-Entwicklung > C++ > Sind intelligente Zeiger in C mit einem erheblichen Speicher- und Zeitaufwand verbunden?

Sind intelligente Zeiger in C mit einem erheblichen Speicher- und Zeitaufwand verbunden?

Susan Sarandon
Freigeben: 2024-10-25 02:48:02
Original
253 Leute haben es durchsucht

Do Smart Pointers in C   Come with a Significant Memory and Time Overhead?

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage