std::fopen падает в релизе с ошибкой 0xc0000417
От: удусекшл  
Дата: 03.02.22 13:53
Оценка:
Здравствуйте!

Такой код:
    if (!appConfig.outputFilename.empty())
    {
        std::string openMode = "w";
        if (!appConfig.getOptOverwrite())
            openMode.append("x"); // This flag forces the function to fail if the file exists, instead of overwriting it.


        cout<<"try to create file '" << appConfig.outputFilename << "', open mode: '" << openMode << "'" << endl;

        errno = 0;
        std::FILE* pFile = std::fopen( appConfig.outputFilename.c_str(), openMode.c_str() );

        //...
    }


В ouput отладчика прилетает:

try to create file 'test.txt', open mode: 'wx'
The thread 0x4730 has exited with code -1073740777 (0xc0000417).
// Тут ёще куча потоков с тем же кодом завершается


std::fopen принимает в обоих параметрах const char* — вроде всё легально. Значения я печатаю до вызова — и имя файла и openMode — валидные строки.

В Debug сборке всё работает без нареканий. Я видимо, где-то протупил, но не пойму где.



ЗЫ std::fopen нужна вообще только с одной целью — обломаться, если файл существует. Почему-то стандартные потоки не имеют такого флага
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.