QDomDocument SetContent() crash

QDomDocument SetContent() crash

本文关键字:crash SetContent QDomDocument      更新时间:2023-10-16

我正在将QT4.8与32位Visual Studio 2010一起使用。我正在尝试更改函数中XML文件的某些内容。功能开始时类似

QFile* myXmlFile;
QDomDocument myDom;
...
myDom.setContent(myXmlFile);

当xml文件小于24Mb时,函数工作得很好。然而,当我的文件比这个大时,程序会在上面的最后一行崩溃。我发现了一个类似的问题,但它说错误发生在200Mb之后,问题似乎有所不同。

我有16 Gb的内存,你几乎看不到内存使用的变化,所以这可能不是因为内存不足。

当我使用try-catch块来查看问题时,它表示存在错误的分配异常。QDomDocument似乎无法分配超过24 MB的内存,尽管计算机中有更多的可用内存。我阅读了QDomDocument的Qt文档,但没有发现任何线索。

有没有办法让程序或QDomDocument对象使用更多内存,或者你认为这是一个不同的问题?

如果XML文件在磁盘上是24MB,这并不意味着分配的RAM将是24MB——可能会更多。无论如何,Windows EXE文件可能有最大HEAP限制,可以从Visual Studio中增加,请参阅链接。。

我错了Marco解决问题的建议。尽管在某些情况下增加堆可能会有所帮助,但当你有太多的小节点时,QDomDocument可能会变得大到2GB,这是它的极限。我想最好的方法是使用XmlStream读写器。