У меня есть приложение Qt5 / C ++, которое, кажется, работает нормально, но при запуске в режиме отладки (GDB) эта ошибка появляется на консоли QT Creator (stderr) — СЛУЧАЙНО !:
Corrupted shared library list: 0x7fffe8008e90 != 0x751e50
Я не могу найти какую-либо ссылку на причину, и я не могу выяснить, что это вызывает (кроме того, что что-то делать с использованием QLinkedList.) Я пытался переключиться на QVector, но иногда появляется та же ошибка.
Что это и как мне это исправить? Вальгринд говорит, что нет повреждения памяти … так это ложная проблема с сообщениями? Или я что-то не так делаю.
Я проследил вышеупомянутую ошибку до последней строки (строка 4) ниже.
Settings *programSettings = Settings::instance();
QString driver=programSettings->database_driver();
driver="QMYSQL"; // Override for testing
m_db = QSqlDatabase::addDatabase(driver);
Это не имеет смысла для меня … может кто-нибудь объяснить, почему строка QSqlDatabase :: addDatabase вызывает повреждение? Кроме того, почему ошибка появляется ТОЛЬКО при отладке … но не при работе без GDB?
Судя по количеству просмотров, кажется, что много людей с этой проблемой. Мы сократили код до простого примера и затем воспроизвели проблему. Источником проблемы является не код пользователя, а сам Qt Creator. Мы не можем идти дальше — просто мириться с этим, пока не появится исправление Qt Creator.
Похоже, вы пишете на память, которая не принадлежит вам. Похоже, вы разыменовываете указатель, который имеет неинициализированное значение. Скомпилируйте приложение со всеми включенными предупреждениями и убедитесь, что вы понимаете все предупреждения. После этого вам может понадобиться запустить аудит кода, после того как вы, конечно, минимизируете код.