array mit new erzeugen
-
hallo, hab ne kurze frage:
char *m = new char[1000]; cout << sizeof(m)warum liefert sizeof in dem fall 4 zurück????
-
Weil
sizeofdie Grösse des Objekts zurückliefert. Und die Grösse vonint*ist oftmals 4 Bytes - das ist nämlich nur ein Zeiger. Was dahinter steckt, interessiertsizeofnicht. Du hast auch keine Standard-Möglichkeit, an die Grösse des dynamischen Arrays zu kommen. Speichere sie deshalb in einer separaten Variable ab oder nutze gleich STL-Container.
-
hiho,
weil du dem sizeof-Operator eine Adresse übergibst.
Adresse z.B.: 0x22ff7416- Pro Hex-Stelle brauchst du 4 bit
- 8 Hex-Stellen sind es
- 4*8bit = 32bit = 4Byte
-
dankeschön

-
Dweb schrieb:
weil du dem sizeof-Operator eine Adresse übergibst.
Nicht wirklich. Der
sizeof-Operator wird zur Compilezeit ausgewertet, da weiss er noch nichts von Adressen. Wie gesagt wird der Typint*übergeben, dessen Objektgrösse hier 4 Byte beträgt.
-
cool ist:
int a[5]; sizeof(a);Wie gesagt, sizeof wird zur Kompilezeit ausgewertet.