Из за чего может вылетать программа при использовании QString arg?

При долгом использовании программы, иногда вылетает программа в ф-ции QString::arg. В чем может быть дело?


немного кода

QFile *file = new QFile("log.txt");
QTextStream out;
out.setDevice(file);
//**********

В функции где происходит ошибка, выше тоже идет запись в файл. И все корректно записывается. Более того это функция записи логов. Она часто вызывается. Но иногда вылетает.


Иногда выводит сообщение Critical error detected c0000374

скриншот ошибки


Ответы (1 шт):

Автор решения: Kto To

Оказалось из-за неудачного перевода в enum

enum class EE {
    e1 = 1,
    e2,
    e3
};
QString someFunc(EE e) {
    switch(e) {
        case EE::e1: return "EE::e1";
        case EE::e2: return "EE::e2";
        case EE::e3: return "EE::e3";
    }
}

QTextStream SomeClass::operator<<(QTextStream &out, const MyStruct &r) {
    int i = 0;
    out << someFunc(EE(i)) << endl;  // тут неопределенное поведение!
    out << r.otherFields << endl;    // которая вызывала ошибку, но ниже.
}
→ Ссылка