Implementierung von Realloc in C
int getmin(int a, int b)
{
return a<b?a:b;
}
void *reallocation(void *ptr, size_t size) //size_t in bytes
{
void *newptr;
int msize;
msize = getsize(ptr);
msize = getmin(msize, size);
printf("msize = %d", msize);
newptr = malloc(size);
newptr = memcpy(newptr, ptr, msize);
free(ptr);
return newptr;
}
Ich habe meine eigene Realloc implementiert und um die Größe des zugewiesenen Speichers mit malloc zu ermitteln (ich weiß jedoch, dass es in c keine Methode dafür gibt).
Meine Neuzuweisungsfunktion funktioniert auf meinem System einwandfrei. Wie ermitteln wir die Größe des von malloc () zugewiesenen Speichers?
Können wir auch eine Inplace-Neuzuweisung durchführen, wenn die Größe des zuvor zugewiesenen Speichers größer ist als der neue erforderliche?