2008-09-16 10 views
3

J'utilise fdopen pour associer un flux à un fichier ouvert.Un fdopen() peut-il provoquer une fuite de mémoire?

Lorsque le fichier close() est le fichier, le flux est-il automatiquement dissocié ainsi que tous les flux de mémoire renvoyés au système d'exploitation, ou dois-je connaître le fichier fdopen'd et le fermer d'une manière spécifique?

-Adam

Répondre

5

close() est un appel système. Il fermera le descripteur de fichier dans le noyau, mais ne libérera pas le pointeur et les ressources FILE dans libc. Vous devriez plutôt utiliser fclose() sur le pointeur FILE, qui prendra également soin de fermer le descripteur de fichier.

-1

Le noyau gère ces ressources, et vous avez aucun contrôle sur eux autre que l'appel proche qui peut libérer la mémoire quand il veut (au plus tard la fin du processus).

/Allan