2016-12-04 1 views
0

Wie viel Speicher würde es dauern, einen Verweis auf ein Objekt in C++ zu speichern? Wird es verschiedene Speichermengen benötigen, um einen Verweis auf einen Objektvergleich zu speichern, um einen Verweis auf einen bestimmten Datentyp in C++ zu speichern (wie int, double und string)? Und wie viel Speicher würde es dauern, einen Zeiger auf ein Objekt zu speichern? wird es eine andere Menge an Speicherverwendung geben, die eine Referenz auf ein Objekt speichert?Wie viel Speicher würde es dauern, einen Verweis auf ein Objekt in C++ zu speichern?

+3

Das gleiche wie ein Zeiger. *** Und wie viel Speicher würde es dauern, um einen Zeiger auf ein Objekt zu speichern? Normalerweise 32 Bits auf 32-Bit-Code und 64 Bits auf 64-Bit-Code. – drescherjm

+0

Dies ist im Grunde mehr als eine Frage, und ich stimme daher zu schließen, dass es zu breit ist. Weitere Informationen zu den Themen finden Sie in der [Hilfe] (http://stackoverflow.com/help/on-topic). – MrEricSir

+1

Das ist ein bisschen schwierig. Normalerweise würde ich 'std :: cout << sizeof (meineReferenz);' sagen, aber das wird nicht funktionieren. Weder wird 'std :: cout << sizeof (char &);' Ein bisschen schade, dass. – user4581301

Antwort

0

Zeiger und Referenz sind beim Compiler identisch. Sie alle haben die Größe eines Zeigers. Verwenden Sie sizeof(void *), um die Größe zu erhalten.

+0

Zeiger auf verschiedene Typen können unterschiedliche Größen haben –

+0

@ M.M Ein Zeiger ist ein Zeiger, darunter liegt nur eine ganze Zahl. Ich kann nicht sehen, wie Sie Zeiger unterschiedlicher Größe haben können. –

+0

Das sind Implementierungsdetails, verschiedene Implementierungen können sich unterscheiden (oft als Reaktion darauf, welche Hardware verwendet wird). Segmentierte Architekturen hatten eine Vielzahl von Zeigergrößen. –

2

Der von einer Referenz verwendete Speicher ist nicht spezifiziert. Manchmal wird es keine geben, z.B .:

void func() 
{ 
    int a; 
    int &b = a; 
    // ... 
} 

es ist wahrscheinlich, dass b wird keinen Speicher verbrauchen.

+1

Compiler wird die Referenz löschen, aber wenn eine Referenz gespeichert wird, kostet es immer noch die Größe eines Zeigers. –

+0

@YanZhou meine Antwort ist nach dem C++ Standard, Sie sprechen über Details von einigen Compilern, die Sie verwendet haben –

+1

Ja, es ist nicht angegeben, ob eine Referenz Speicherplatz nach dem Standard erfordert. Was ich meinte, ist, wenn es Lagerung erfordert ... –

Verwandte Themen