【问题标题】:Visual studio 2008 "Debug Assertion Failed" message while calling QDomElement::text() function调用 QDomElement::text() 函数时的 Visual Studio 2008“调试断言失败”消息
【发布时间】:2011-07-20 01:43:07
【问题描述】:

我已经包含了源、错误和堆栈跟踪。我该如何解决这个问题?我需要有关如何处理此问题的指针(说明)

源代码:

QFile xmlInputFile(".\\gatewayipmonitor.xml");  
xmlInputFile.open(QIODevice::ReadOnly);

QByteArray xmlData(xmlInputFile.readAll());

QDomDocument doc;
doc.setContent(xmlData);

QDomElement docEl(doc.documentElement());
const QString tagName(docEl.tagName());

docEl.text();

当最后一行被执行时 - 我得到消息

Windows 已在 tests.exe 中触发断点。

这可能是由于堆损坏,这表明存在错误 tests.exe 或它已加载的任何 DLL。

这也可能是由于用户在 tests.exe 有 重点。

输出窗口可能有更多的诊断信息。 "

当我点击继续时 - 我进一步收到消息 -

程序:...n\tests\Release\tests.exe 文件: f:\dd\vctools\crt_bld\self_x86\crt\dbgheap.c

表达式:_CrtIdValidHeapPointer(pUserData)

堆栈跟踪:

msvcr90d.dll!_free_dbg_nolock(void * pUserData=0x00a5f348, int nBlockUse=1)  Line 1317 + 0x30 bytes C++
msvcr90d.dll!_free_dbg(void * pUserData=0x00a5f348, int nBlockUse=1)  Line 1258 + 0xd bytes C++
msvcr90d.dll!free(void * pUserData=0x00a5f348)  Line 49 + 0xb bytes C++
QtCored4.dll!qFree(void * ptr=0x00a5f348)  Line 60 + 0xa bytes  C++
QtCored4.dll!QString::free(QString::Data * d=0x00a5f348)  Line 1185 + 0x9 bytes C++
QtCored4.dll!QString::~QString()  Line 883 + 0x23 bytes C++
tests.exe!test_GatewayIpMonitor()  Line 321 + 0xc bytes C++
tests.exe!main()  Line 343  C++
tests.exe!__tmainCRTStartup()  Line 586 + 0x17 bytes    C

【问题讨论】:

    标签: c++ visual-studio-2008 qt qtxml


    【解决方案1】:

    我在发布版本中运行该程序,但链接到调试版本库 (Qtcored.lib)。这就是问题所在。

    【讨论】:

      【解决方案2】:

      这不是堆损坏。你正在删除一个错误的 qstring。找出 qstring 实例或指针(很可能)在它实际上很糟糕时是如何使用的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2014-09-09
        • 2016-04-21
        • 2016-02-19
        相关资源
        最近更新 更多