sizeof()
-
Hi!
Eine kleine Beginnerfrage:
char *buffer; buffer = (char*)malloc(10); int test = sizeof(buffer); //test ist immer 4, warum???Sollte mir sizeof() nicht die Größe des verbrauchten Speicherbereichs zurückliefern? Also 10?
Vielen dank für eure Hilfe!
-
sizeof(buffer) liefert dir die Größe des Datentyps von buffer in Bytes. Das ist char*, also in dem Fall 4.
-
Ok, und wie kann man nun die 10 Byte ermitteln?
-
Leider gar nicht. Höchstens vielleicht mit irgendwelchen Funktionen, die von Compiler zu Compiler anders heißen. Der übliche Weg ist, dass man sich die Länge eines allozierten Feldes in einer separaten Variable speichert. Oder, noch häufiger, man packt den Zeiger und die Länge zusammen in eine Klasse. So wie std::vector.
-
Gut zu wissen!
Danke!
-
eigene string klasse schreiben. kann spass machen und man lernt was
-
Du kannst dir auch einfach merken wieviel Byte du allokiert hast. Z.B. als Paar von Zeiger und Speichergroesse.