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
sizeof
die 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, interessiertsizeof
nicht. 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.