Может ли функция fdopen() вызвать утечку памяти?

StackOverflow https://stackoverflow.com/questions/69565

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

-Адам

Это было полезно?

Решение

close() это системный вызов.Это закроет файловый дескриптор в ядре, но не освободит указатель на ФАЙЛ и ресурсы в libc.Вместо этого вам следует использовать fclose() для указателя на ФАЙЛ, который также позаботится о закрытии файлового дескриптора.

Другие советы

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

/Аллан

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top