Fdopen () peut-il causer une fuite de mémoire?
-
09-06-2019 - |
Question
J'utilise fdopen pour associer un flux à un fichier ouvert.
Lorsque je close ()
le fichier, le flux est également automatiquement dissocié et que toute la mémoire du flux est renvoyée au système d'exploitation, ou dois-je connaître le fichier fdopen'd et fermer d'une manière spécifique?
-Adam
La solution
close ()
est un appel système. Cela fermera le descripteur de fichier dans le noyau, mais ne libérera pas le pointeur FILE ni les ressources de libc. Vous devez utiliser fclose () sur le pointeur FILE, ce qui permettra également de fermer le descripteur de fichier.
Autres conseils
Le noyau gère ces ressources et vous ne les contrôlez pas autre que l'appel proche qui peut libérer de la mémoire quand il le souhaite (pas plus tard que la fin du processus).
/ Allan