Различное поведение объекта ofstream в abort () и отключении питания перед ofstream.close ()? - PullRequest
0 голосов
/ 12 сентября 2018

Я обнаружил различное поведение ofstream , если ofstream.close () не вызывается из-за прерывания до close () и если отключение питания до близко () .

Примечание : файл отсутствует на диске.

1. С прерыванием ()

int _tmain(int argc, _TCHAR* argv[])
{
    ofstream  o("new.txt");
    o<<"new file data";
    abort();
    o.close();
    return 0;
}

output: файл, созданный с «новыми данными файла».

2. С отключением питания

int _tmain(int argc, _TCHAR* argv[])
{
    ofstream  o("new.txt");
    o<<"new file data";
    //power down or stop debug here
    o.close();
    return 0;
}

вывод: пустой файл создан.

При использовании abort () кажется, что close () вызывается из деструктора fstream, но не при сценарии отключения питания?

...