Speicherbedarf von unique_ptr [duplizieren]

8

Hat eine unique_ptr -Instanz (ohne benutzerdefiniertes Löschprogramm) den gleichen Speicherbedarf wie ein roher Zeiger oder speichert eine Instanz mehr als nur den Zeiger?

    
Museful 07.11.2015, 07:34
quelle

1 Antwort

7

Wie @JoachimPileborg vorgeschlagen hat, mit GCC 4.8 (x64) diesen Code

%Vor%

erzeugt diese Ausgabe:

  

sizeof (unique_ptr) = 8

In dieser Implementierung lautet die Antwort also yes .

Das ist nicht erstaunlich: Schließlich fügt unique_ptr nicht Features zu rohen Zeigern hinzu (zB ein Counter wie shared_ptr . Tatsächlich, wenn Ich drucke sizeof(shared_ptr<int>) das Ergebnis dieser Zeit ist 16 ). unique_ptr kümmert sich um einige Aspekte der Zeigerverwaltung.

Übrigens, wenn ein unique_ptr von einem rohen unterscheidet, wird der generierte Code anders sein, wenn er den einen oder anderen benutzt. Insbesondere wenn ein unique_ptr in Ihrem Code den Gültigkeitsbereich überschreitet, erzeugt der Compiler Code für den Destruktor dieser speziellen Spezialisierung und verwendet diesen Code jedes Mal Ein unique_ptr dieses Typs wird zerstört (und das ist genau das, was Sie wollen).

    
Paolo M 07.11.2015, 07:41
quelle

Tags und Links