Rétrécir avec realloc

J’ai rencontré ce petit morceau de code dans cette question , et je voulais savoir,

La fonction realloc() jamais déplacer un bloc de mémoire vers un autre emplacement, lorsque l’espace mémoire indiqué est réduit?

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

Si possible, dans quelles conditions puis-je m’attendre à avoir une adresse différente de celle de a ?

    realloc peut déplacer la mémoire pour n’importe quel appel. En réalité, dans de nombreuses implémentations, une réduction ne ferait que modifier la taille réservée dans le tas et ne déplacerait pas la mémoire. Cependant, dans un segment optimisé pour une faible fragmentation, il peut choisir de déplacer la mémoire vers un emplacement plus approprié.

    Ne realloc pas sur realloc conserver la mémoire au même endroit, quelle que soit l’opération.