Klitzekleine Frage zu malloc
-
Hoi.
Kleine Frage:
p=malloc(10*sizeof(int));
Damit werden 40Bytes freigegeben (wenn möglich).
Nur wenn ich, die Groesse abfragen will, mit:
sizeof(*p));
dann sagt er immer, dass der 4Byte gross ist, egal wieviel ich freigebe.
Denke mal, dass liegt am int Zeiger.
Nur wie kann ich denn jetzt, die tatsächliche Grösse ermitteln
-
mittels malloc wird nix freigegeben, sondern reserviert
sizeof(char) == 1
sizeof(char*) == (meistens) 4mittels sizeof (welches zur compile zeit ausgewertet wird) kann man nur die groesse von statischen arrays ermitteln:
int foo[10];
sizeof(foo) == sizeof(int)*10aber bei zeigern
int* foo;
funktioniert das nicht, da sizeof(foo) == sizeof(int*) ist...
-
Jetzt geht mir ein Licht auf
Vielen Dank Shade.
-
:p
-
Ausserdem sagst du sizeof(*p) und *p ist _ein_ int und kein Pointer bzw. ein Array...
-
4 Byte, weil 4 Byte für eine Adresse im Rechner nötig sind, auf nem 64 Bitter hättest Du dann 8 Byte für jede Adresse, wenn er auch 2 hoch 64 Byte an Speicher adressieren kann...
Malloc und Konsorten gibt Dir stets nur den Zeiger (oder Adresse) auf das "erste" Element des reservierten Speicherbereichs zurück. Gibt er ein NULL zurück ist die Speicher Allokation fehlgeschlagen...
Gruß Winn