2

我有一个看起来运行良好的 Qt5/C++ 应用程序,但是在调试模式 (GDB) 下运行时,QT Creator 控制台 (stderr) 上会弹出此错误 - 偶尔!:

Corrupted shared library list: 0x7fffe8008e90 != 0x751e50

我找不到任何有关原因的参考,也无法弄清楚是什么触发了它(与使用 QLinkedList 有关的其他事情。)我尝试切换到 QVector 但有时会弹出相同的错误。

这是什么,我该如何解决?Valgrind 说没有内存损坏......所以这是一个虚假报告问题吗?还是我做错了什么。


我已将上述错误追溯到下面的最后一行(第 4 行)。

Settings *programSettings =  Settings::instance();
QString driver=programSettings->database_driver();
driver="QMYSQL";  // Override for testing
m_db = QSqlDatabase::addDatabase(driver);

这对我来说毫无意义......有人可以解释为什么 QSqlDatabase::addDatabase 行会导致损坏吗?同样,为什么只有在调试时才会出现错误......但在没有 gdb 的情况下运行时不会出现?

4

2 回答 2

1

从浏览量来看,似乎有很多人有这个问题。我们将代码缩减为一个简单的示例,然后重现该问题。问题的根源不是用户代码,而是 Qt Creator 本身。我们不能走得更远——只能忍受它,直到 Qt Creator 修复出现。

于 2015-03-14T00:18:08.500 回答
0

看起来你正在写不属于你自己的记忆。看起来您正在取消引用具有未初始化值的指针。在启用所有警告的情况下编译您的应用程序,并确保您了解所有警告。之后,您可能需要开始代码审核,当然是在您最小化代码之后。

于 2014-10-02T15:32:15.060 回答