Ошибка сегментации при инициализации QRegularExpression, но только иногда

это одна из моих самых странных ошибок.

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.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]