L'idée : chaque malloc a un propriétaire
En C, personne ne libère la mémoire à votre place. Pour chaque bloc alloué, un seul morceau de code est responsable d'appeler free, exactement une fois. C'est le propriétaire.
Un commentaire dans un header dit souvent qui est le propriétaire. Lisez-le : « The CALLER owns the result. »
La situation
make_greeting alloue une chaîne et la distribue. log_greeting l'utilise, l'affiche et retourne. Le test appelle log_greeting cent fois.
Votre mission
Trouvez le propriétaire, puis dites au junior quelle fonction doit appeler free, sur quelle variable, et à quel endroit. « Corrige la fuite » n'est pas une instruction, c'est un souhait.
À surveiller
- Une demande vague pousse le junior vers le premier raccourci venu. Vérifiez ce qu'il a fait avant de lui faire confiance.
- Libérer dans la mauvaise fonction est pire que ne pas libérer : une fuite devient un crash.
- Certains tests sont cachés. Ils vérifient les cas auxquels vous n'avez pas pensé.