"Debug Assertion Failed" 从发布模式更改为调试模式时出错

"Debug Assertion Failed" error when changing from release mode to debug mode

我 运行 我的项目处于发布模式,我没有遇到任何问题。 然后我将模式更改为调试模式,但出现错误 "debug assertion failed"。

这是导致它的代码:

   QXmlStreamReader* xmlReader = new QXmlStreamReader(xmlFile);
   xmlReader->readNextStartElement();

   QXmlStreamAttributes attributes;
   attributes = xmlReader->attributes();
   cout << (attributes.value("name").toString().toStdString());

在这条 cout 行之后,我得到了错误信息。

导致差异的模式之间可能有什么差异?

我想知道我需要为 运行 处于调试模式的项目更改什么。

不同模式的区别在于发布模式

assert( expr );

编译为空。在调试模式下,它编译成类似的东西:

if (!(expr))
   assert_failed( "expr" );

(以上为提味,有细微之处)。这意味着您没有注意到释放模式下的问题(您可能做了一些事情,比如覆盖一些未使用的内存)。墨菲定律说,当您向大客户/您的教授进行演示时,您 注意到问题。

如果您查看出现断言的行,它会告诉您它在抱怨什么。你需要解决这个问题。