Précisions sur l'erreur "malloc: Incorrect checksum for freed object"

Précisions sur l'erreur "malloc: Incorrect checksum for freed object"

par Tom Louis Demont,
Number of replies: 1

Bonjour,

Dans le cadre du second homework, je rencontre l'erreur suivante lors d'une opération de realloc :

malloc: Incorrect checksum for freed object 0x101027980: probably modified after being freed.
Corrupt value: 0x101025140

J'aurais voulu savoir ce que cela signifie dans le cadre d'une opération de realloc : pourquoi parle-t-on ici d'un objet libéré qui aurait été modifié ? Un realloc ne devrait pas libérer puis modifier des valeurs pointées. (Cette erreur intervient pendant l'ajout d'éléments dans la queue de priorité donc avant de vider les queues, d'où ma confusion).

Merci.

In reply to Tom Louis Demont

Re: Précisions sur l'erreur "malloc: Incorrect checksum for freed object"

par Cédric Viaccoz,
A mon avis vous n'avez pas totalement compris ce que fait realloc. Realloc ne va pas tout le temps "augmenter" la taille de la zone mémoire référencée par le pointeur donné en argument. S'il n'y a plus de place continue et libre dans la RAM pour tenir le reste de la nouvelle place mémoire demandée, realloc va allouer une nouvelle zone mémoire à un nouvel endroit dans votre RAM puis s'occuper de recopier les données de l'ancienne zone dans la nouvelle zone. Auquel cas realloc renvoie le pointeur sur la nouvelle zone mémoire, et libère l'ancienne (pour éviter toute fuite de mémoire).

En conclusion, après avoir utilisé realloc, n'utilisez plus l'ancien pointeur, mais récupérez le pointeur retourné par realloc.