c++11 - 这是 Qt Creator 分析器中的错误吗
问题描述
在处理一些代码时,我遇到了 QT Creator 性能下降的问题。实际上它会在无限循环中启动一个占用 100% CPU 的线程:即使关闭 IDE 进程而不杀死它也是不可能的。这在我的机器上完全可以重现。在提交错误之前,我希望得到其他用户的确认,并收集 QT Creator、OS、编译器、STL 等版本的一些统计信息。代码需要 C++11 或更高版本。
经过一番调查,我将我的代码简化为重现问题的最短示例(不要看代码的语义,问题在于 IDE 如何处理它):
#include <set>
int main() {
std::set<int> s;
auto iter = s.insert(1).first;
iter->second;
return 0;
}
亮点:
- 汽车很重要
- 可以用地图而不是集合来重现相同的行为
- insert很重要,因为它返回的不是一个简单的迭代器,而是一个 pair< iterator, bool>
- iter- >second行在语义上是不正确的,但这并不重要(您可以使用std::set< std::pair>使其正确)。问题是 IDE 在iter->之后崩溃,不管它可能意味着什么。
我的配置是:基于Qt 5.5.1(MSVC 2013,32位)的QT Creator 3.5.1;视窗 10。
解决方案
自 Qt Creator 3.5 以来发生了很多事情。代码模型是全新的,基于 Clang。因此,我无法使用 Qt Creator 4.9 重现您的问题。(是的,旧的代码模型有一些限制和错误。)
通常,在准备错误报告之前,请始终确保您拥有受支持的最新软件版本。