L'appel à libérer entraînera un comportement indéfini. Voici le raisonnement:
La fonction realloc va libérer le pointeur d'espace à par le pointeur p.
La durée de vie d'un objet, pointé vers, se termine à la désallocation.
La fonction free reçoit un pointeur vers l'espace désalloué et provoque un comportement indéfini .
De plus, la valeur du pointeur p après l'appel de réallocation est indéterminée et son utilisation peut entraîner un comportement indéfini dû aux représentations de déroutement. En d'autres termes, même si le pointeur renvoyé par realloc pointe au début du même espace que le pointeur p, l'objet alloué par realloc compte comme un nouvel objet avec une nouvelle durée de vie et ne peut pas être désalloué en utilisant le pointeur p.
(cité à partir de: ISO/IEC 9899: 201x 7.22.3.5 La fonction realloc 2)
La fonction realloc libère l'ancien objet pointé par ptr et renvoie un pointeur à un nouvel objet qui a la taille spécifiée par taille.
(cité à partir de: ISO/IEC 9899: 201x 7.22.3 fonctions de gestion de mémoire 1)
La durée de vie d'un objet alloué étend à partir de la répartition jusqu'à ce que la désallocation
(cité de: ISO/CEI 9899: 201x 7.22.3.3 La fonction libre 2)
Sinon, si l'argument ne correspond pas à un pointeur précédemment renvoyé par une fonction de gestion de la mémoire , ou si l'espace a été désalloué par un appel à free ou realloc, le comportement est indéfini.
(cité à partir de: ISO/IEC 9899: 201x 6.2.4 Durée de stockage d'objets 2)
La valeur d'un pointeur devient indéterminée lorsque l'objet qu'il pointe vers (ou juste après) atteint l'extrémité de sa vie.
Si 'realloc' renvoie un pointeur non nul, le pointeur transmis est invalidé (ie' free'd), vous n'avez pas besoin de le faire vous-même. – tkausl
Il va libérer les 40 octets. Il arrive juste qu'il n'ait pas besoin de déplacer quoi que ce soit dans la réallocation –
Si 'q == p' cela ne fait aucune différence que vous passez à' free', qui n'a aucune idée de la variable que vous avez utilisée, seulement de sa valeur. Mais ce serait une mauvaise pratique, je considère que c'est une question académique. –