Realloc qui ne fait pas changer la place de ptr dans la mémoire

Re: Realloc qui ne fait pas changer la place de ptr dans la mémoire

by Marc Bernard René Gay-Balmaz -
Number of replies: 0

Bonjour,

Oui c'est tout à fait possible et même très probablement ce qui va arriver quand on diminue la taille allouée. 

Et pour la question de la fuite mémoire, non, ça ne crée pas de fuite mémoire, la mémoire réduite est free, si on veut, en cela que la mémoire allouée l'est en écrivant un en-tête dans la mémoire contenant la taille de la mémoire allouée et donc les zones mémoire qui n'ont pas cet en-tête (en général ils en ont un très similaire mais avec un pointeur vers la prochaine zone libre) sont des zones mémoire libres. Une fuite mémoire se produit quand on laisse un en-tête dans la mémoire mais qu'on perd son adresse (dans ce cas, on ne peut plus le supprimer et le système ne sait pas quelles zones mémoire sont accessibles). Et dans le cas où on réduit la taille de la zone allouée, on modifie la taille de la zone dans l'en-tête et la zone suivante est donc considérée comme libre (et en général on va aussi créer un en-tête dans la zone libérée pour qu'il soit conforme).

Je précise juste que cette manière d'allouer de la mémoire est une manière de faire mais il en existe sûrement d'autres.

Et juste pour que ce soit bien claire, il n'est pas nécessaire que vous sachiez tout ça, juste comment utiliser l'interface, et donc dans le cas présent que réduire une taille avec un realloc ne crée pas de fuite mémoire 

En espérant que ça aide