Bonjour à tous.
On m'a refilé un programme écrit par un collègue il y a plusieurs années. A la base il a été écrit sous AIX, donc j'étais censé simplement le recompiler et le faire marcher sous Debian. Mais j'ai des erreurs en pagailles, apparemment le programme est archi buggé, je n'arrive pas à comprendre qu'il ait pu marcher plusieurs années. De plus le code est écrit sous la forme de deux fichiers de 800 lignes chacun, avec des fonctions qui font 4 pages, et quasiment aucun commentaire, la grosse galère, quoi.
N'ayant pas d'autre choix, je me suis plongé dans l'analyse de ce programme, et j'ai commencé à traquer les erreurs de segmentation. Il apparait que ces erreurs interviennent systématiquement pendant ou immédiatement après l'appel de la fonction chargée de libérer la mémoire allouée. Et je rencontre notamment des erreurs liées à des double-free(), dont je ne comprend pas trop d'où ils sortent. D'où ma question :
Est-il possible de vérifier si un pointeur pointe vers une zone allouée?
parce que je mettrais bien en place un test du type
si (mémoire déjà libérée)
ne rien fairesinon
libérer la mémoire
merci.
Partager