Größe von malloc herausfinden?
-
kurze Frage. Wenn ich mit malloc einen Speicherblock reserviere - wie kann ich später die Größe des Blocks herausfinden?
-
int *pt; int speicher_groesse = (benoetigter_speicher * sizeof(int)); pt = malloc(speicher_groesse);
In speicher_groesse steckt dann die Größe des Speichers in Bytes.
-
TheShadow2000 schrieb:
kurze Frage. Wenn ich mit malloc einen Speicherblock reserviere - wie kann ich später die Größe des Blocks herausfinden?
Soweit ich weiß, geht das ohne weiteres nicht. Mir ist jedenfalls nichts
bekannt.Gruß mcr
-
Außer halt, man merkt sich, wie groß man den Block gemacht hat
-
void *malloc2 (size_t size) { size_t *p = malloc (size + sizeof(size_t)); if (p) { *p = size; return p+1; } return p; } #define free2(p) free(((size_t*)(p))-1) #define getsize2(p) *(((size_t*)(p))-1) int main() { // malloc char *x = malloc2(100); // benutzen for (s=0; s<100; s++) x[s] = (char)s; // grösse abfragen printf ("%d\n", getsize2(x)); // freigeben free2(x); }
-
Verrate doch nicht alle Geheimnisse...