char* fileData = new char[8]; Ausgabe von sizeof(fileData) == 4
-
Hi !
ich lege ein char* array der Größe 8 an.
Allerdings zeigt mircout << sizeof(fileData);
immer nur 4 auf der Konsole an. Wie kann das sein ?? Selbst wenn ich auf new char[16] erhöhe wird immernoch 4 ausgegeben.
sizeof(char) gibt bei mir 1 auf der Konsole aus.
thx
Tomps sys ist linux
-
sizeof wird zur Compilezeit aufgelöst und gibt die Größe des Typs des Parameters zurück. In deinem Fall ist das ein char-Pointer, und der ist auf 32bit-Plattformen idR 4 Byte groß. Wenn du zum Beispiel
char buf[16]; printf("%d\n", sizeof(buf));
Wenn du den Speicher aber erst zur Laufzeit anforderst, geht das (logischerweise) nicht, und du musst dir die Länge merken.
-
thx 0xdeadbeef, heißt das praktisch, dass es nicht möglich ist mit sizeof herauszufinden wie groß der Speicher ist den ich reserviert habe. Bzw wie kann ich mir das anzeigen lassen ?
tom
-
es geht nicht. Merken.
-
randa schrieb:
es geht nicht. Merken.
Oder besser std::vector statt des dynamischen Arrays benutzen.