это одна из моих самых странных ошибок.
QRegularExpression regexp(" .*");
Это работает хорошо, иногда. Но чем он падает с сегментацией фола.
0 _int_malloc /usr/lib64/libc.so.6 0x7ffff59f2196
1 malloc /usr/lib64/libc.so.6 0x7ffff59f411c
2 operator new(unsigned long) /usr/lib64/libstdc++.so.6 0x7ffff62ac0cd
3 QRegularExpression::QRegularExpression(QString const&, QFlags<QRegularExpression::PatternOption>) /usr/lib64/libQt5Core.so.5 0x7ffff6b45fdd
Странная вещь, если я иногда запускаю программу, то все в порядке! Нет ошибок вообще.
Иногда его падения после того, как это местоположение было исключено точно 71 раз.
Я просто понятия не имею -.-
РЕДАКТИРОВАТЬ:
char hname[255] ="";
char hname80[255] ="";
char hcas[255] = "";
int i = number;
NAMEdll(i,hname,hname80,hcas);
shortName=hname;
fullName=hname80;
cas=hcas;
// remove unecessary spaces
QRegularExpression regexp(" .*");
cas.remove(regexp);
shortName.remove(regexp);
fullName.remove(regexp)
как предложено, я удалил код, чтобы найти ошибку.
Кажется, это как-то связано с NAMEdll (которая является функцией fortran). Если я возьму эту команду, все в порядке. С этим я получаю это:
0 _int_malloc /usr/lib64/libc.so.6 0x7ffff59f2196
1 malloc /usr/lib64/libc.so.6 0x7ffff59f411c
2 QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlags<QArrayData::AllocationOption>) /usr/lib64/libQt5Core.so.5 0x7ffff6a7c0f6
3 QRegularExpressionMatchPrivate::QRegularExpressionMatchPrivate(QRegularExpression const&, QString const&, QRegularExpression::MatchType, QFlags<QRegularExpression::MatchOption>, int) /usr/lib64/libQt5Core.so.5 0x7ffff6b4617a
4 QRegularExpression::match(QString const&, int, QRegularExpression::MatchType, QFlags<QRegularExpression::MatchOption>) const /usr/lib64/libQt5Core.so.5 0x7ffff6b475e4
5 QRegularExpression::globalMatch(QString const&, int, QRegularExpression::MatchType, QFlags<QRegularExpression::MatchOption>) const /usr/lib64/libQt5Core.so.5 0x7ffff6b47c77
6 QString::replace(QRegularExpression const&, QString const&) /usr/lib64/libQt5Core.so.5 0x7ffff6b1c4a9
7 QString::remove qstring.h 429 0x4852fe
Просто догадываюсь, но есть ли вероятность, что внутри кода на фортране (не моего) что-то может вызвать сбой вызова malloc? И если это так, может кто-нибудь объяснить, как?
РЕДАКТИРОВАТЬ:
Решено:
Хорошо, я нашел это случайно.
В другой части программы у меня был следующий код:
char href[3] ="";
strcpy(href,"DEF");
Это плохо, потому что strcpy также записывает конечный символ ‘\ 0’. Таким образом, письменный chararray имеет длину 4.
Задача ещё не решена.