Um fdopen() pode causar vazamento de memória?
-
09-06-2019 - |
Pergunta
Eu uso o fdopen para associar um stream a um arquivo aberto.
Quando eu close()
o arquivo, o fluxo também é desassociado automaticamente e toda a memória do fluxo é retornada ao sistema operacional, ou preciso estar ciente do arquivo fdopen'd e fechá-lo de uma maneira específica?
-Adão
Solução
close()
é uma chamada de sistema.Ele fechará o descritor de arquivo no kernel, mas não liberará o ponteiro FILE e os recursos na libc.Você deve usar fclose() no ponteiro FILE, que também fechará o descritor de arquivo.
Outras dicas
O kernel gerencia esses recursos e você não tem controle sobre eles, exceto a chamada de fechamento, que pode liberar memória quando desejar (o mais tardar no encerramento do processo).
/Allan
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow