Может ли fdopen () вызвать утечку памяти? - PullRequest
3 голосов
/ 16 сентября 2008

Я использую fdopen, чтобы связать поток с открытым файлом.

Когда я close() файл, поток также автоматически отключается, и вся потоковая память возвращается в ОС, или мне нужно знать о файле fdopen'd и закрывать его определенным образом?

-Adam

Ответы [ 2 ]

5 голосов
/ 16 сентября 2008

close() - системный вызов. Он закроет файловый дескриптор в ядре, но не освободит указатель FILE и ресурсы в libc. Вместо этого следует использовать fclose () для указателя FILE, что также позаботится о закрытии файлового дескриптора.

0 голосов
/ 16 сентября 2008

Ядро управляет этими ресурсами, и вы не можете управлять ими, кроме вызова close, которое может освободить память, когда оно захочет (не позднее завершения процесса).

/ Allan

...