const ref. auf anderen typ
-
Hi,
kurze Frage dazu:bool b = true; cout << sizeof(b) << endl; const int& i = b; cout << sizeof(i) << endl; for(int i = 1; i < 4; ++i) // Speicher scheint zugreifbar und Null cout << (int)((char*)&i)[i] << endl;Ausgabe:
1
4
0
0
0Wird also bei einer (dieser) const ref. eine Stackvariable angelegt? Denn vom bool können die 4 Bytes ja nicht kommen, und wenn sizeof nun 4 ist, kann ich ja im Speicher auch auf 4 Bytes zugreifen, ohne access viol. zu riskieren, oder?
-
iist eine Referenz auf ein neues, namenlosesint-Objekt. Dessen Wert wurde ausbkonvertiert und müsste1sein.
Deine Schleife gibt die drei letzten Bytes des namenlosen Objektes aus. Du siehst die eins nicht, weil die im ersten Byte steht.
-
TyRoXx schrieb:
Du siehst die eins nicht, weil die im ersten Byte steht.
Jo danke, weiß schon. Ging mir nur darum, ob i eine Stackvariable repräsentiert, oder eben nur reinterpretiert wird (und somit der Speicher von i weiterhin nur 1 Byte groß ist).
-
TyRoXx schrieb:
Deine Schleife gibt die drei letzten Bytes des namenlosen Objektes aus.
Ich hätte ja gesagt, daß seine Schleife die letzten drei Bytes des schleifenlokalen
idurchgeht...
-
Caligulaminus schrieb:
TyRoXx schrieb:
Deine Schleife gibt die drei letzten Bytes des namenlosen Objektes aus.
Ich hätte ja gesagt, daß seine Schleife die letzten drei Bytes des schleifenlokalen
idurchgeht...Ja, das auch.
-
Ups, Ergebnis aber dasselbe

Flüchtigkeitsfehler
-
loboo schrieb:
Ups, Ergebnis aber dasselbe

Wie "Ergebnis dasselbe"?
Wenn ich beide Fehler korrigiere, bekomme ich:1 4 1 0 0 0
-
Achso:
Und ja, da wird ein temporäres Objekt vom Typ int angelegt und mit b initialisiert.
-
Furble Wurble schrieb:
Achso:
Und ja, da wird ein temporäres Objekt vom Typ int angelegt und mit b initialisiert.Also eine Stackvariable, auf deren Speicher (hier nun 4 Bytes anstatt 1) man zugreifen kann. Ok.
Furble Wurble schrieb:
Wie "Ergebnis dasselbe"?
Wenn ich beide Fehler korrigiere, ...Ich habe absichtlich bei Index 1 begonnen, auf Byte 1 ist natürlich zugreifbar (bool), und auf Bytes 2-4 der int-Referenz dann scheinbar auch.