Question

Je rencontre ce petit morceau de code cette question , et voulait savoir,

peut-il la fonction realloc() jamais déplacer un bloc de mémoire à un autre emplacement, lorsque l'espace mémoire pointé est rétreint?

int * a = malloc( 10*sizeof(int) );
int * b = realloc( a, 5*sizeof(int) );

Si possible, dans quelles conditions, puis-je attendre b d'avoir une autre adresse de celle a?

Était-ce utile?

La solution

Il est possible de se déplacer realloc mémoire sur un appel. Vrai dans de nombreuses implémentations un psy serait tout simplement entraîner le changement de la taille réservée dans le tas et ne bouge pas la mémoire. Cependant, dans un tas qui optimisé pour une faible fragmentation, il peut choisir de déplacer la mémoire autour d'un emplacement meilleur ajustement.

Ne pas dépendre de la mémoire de maintien de realloc au même endroit pour toute opération.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top