Из за чего может вылетать программа при использовании 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; // которая вызывала ошибку, но ниже.
}
