【发布时间】:2015-12-08 17:44:50
【问题描述】:
我有这个 C++ 代码,我尝试通过 QDomDocument api 从 XML 文件中获取值:
...
QFile xml_file("file.xml");
QDomDocument qdom_document;
maps_qdom_document.setContent(&maps_xml_file);
QDomNodeList maps = qdom_document.elementsByTagName("map");
QDomNode n = maps.item(0);
QDomElement markers_list = n.firstChildElement("markers_list");
QDomNodeList markers = markers_list.elementsByTagName("marker");
QDomNode marker;
int _id;
QString value1;
for (int i = 0; i < markers.size(); i++) {
marker = markers.item(i);
// APPLICATION STOPS AT THE LINE BELOW
value1 = marker.firstChildElement("id").text(); //!!!ERROR DETECTED HERE
_id = value1.toInt();
}
...
测试它定义的值 value1 并包含我想要的值(我将其转换为 std::string 并读取它)
Error Detected when getting value1
这是程序在描述的行停止时的调用堆栈:
这是 natvis 的输出:
Natvis: C:\USERS\USER\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\14.0\EXTENSIONS\BFMZ1AIF.2DM\natvis\qt5.natvis(200,25): Error: class "QString::Data" has no member "offset"
Error while evaluating '((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),sub' in the context of type 'main.exe!QString'.
我使用 Visual Studio 2015 和编译器 vsc10(Visual Studio 2010 的)。我使用最适合 Qt 5 的 QT VS Addin,但我使用 Qt4.8 库对其进行配置。
我在网上搜索,发现是内存问题(删除一个已删除的变量或类似的东西)但我没有找到正确的解决方案。
【问题讨论】:
标签: c++ visual-studio qt memory