Что случится, если вы выйдете из программы, не выполнив fclose()?

Вопрос:

Что произойдет, если я выйду из программы без закрытия файлов?

Происходят ли какие-то плохие вещи (например, массив файловых дескрипторов уровня операционной системы не освобождается...?)

И на ответ на них в обоих случаях одно и то же

  • запрограммированное завершение
  • неожиданное аварийное завершение

Примеры кода:

С запрограммированным завершением я имею в виду что-то вроде этого:

int main(){
    fopen("foo.txt","r");
    exit(1);
}

С неожиданным сбоем я имею в виду что-то вроде этого:

int main(){
    int * ptr=NULL;
    fopen("foo.txt","r");
    ptr[0]=0;  // causes segmentation fault to occur
}

P.S.

Если ответ зависит от языка программирования, то я хотел бы знать о Си и Си++.

Если ответ зависит от операционной системы, то меня интересует поведение Linux и Windows.

9
задан Jonathan Leffler 23 September 2011 в 22:37
поделиться