O sistema operacional não interfere no estado aberto / fechado dos descritores de arquivos enquanto um executável está sendo executado. No entanto, uma vez que um processo termine (seja de forma graciosa ou desagradável), se houver outros descritores de arquivos abertos, eles serão destruídos juntamente com a imagem do processo.
Como regra geral, no entanto, você deve sempre explicitamente fechá-las. Uma grande vantagem é que isso torna óbvio que os arquivos podem ser fechados, portanto, ao refatorar / alterar o código, você tem uma compreensão de onde eles podem ser fechados em vez de deixá-lo para o sistema operacional para fazê-lo após a finalização. / p>