Comment realloc devine la taille du bloc mémoire d'origine?
Bonjour,
Comme vous avez pu le lire dans le titre une question me turlupine sur la fonction realloc :mrgreen: !!!
Vous pouvez voir dans ce post https://www.developpez.net/forums/d1...loc-ca-marche/ que je propose une interprétation de la fonction realloc :
Code:
1 2 3 4 5 6 7 8 9 10
|
void *realloc(void *blocACopier, size_t nouvelleTaille){
void *tmp=malloc(nouvelleTaille); //allocation d'une nouvelle zone mémoire
if(tmp==NULL){ //allocation raté
return NULL;
}
memcopy(tmp, blocACopier, ancienneTaille); //copie
free(blocACopier); //libération
return tmp;
} |
On peut y voir que ancienneTaille ne fait pas parti des paramètres et est déterminée par la fonction elle même. Or après plusieurs recherche obtenir la taille d'une zone mémoire allouée dynamiquement avec la bibliothèque standard est impossible, seulement realloc y arrive très bien ! :weird:
D'où ma question : comment elle fait?