QDomDocument SetContent()崩溃

时间:2015-11-25 11:44:28

标签: c++ qt memory heap

我正在使用QT4.8和32位Visual Studio 2010。 我试图在函数中更改XML文件的某些内容。函数就像那样开始

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

当xml文件小于24 Mb时,函数工作正常。但是,当我的文件大于那个时,程序在上面的最后一行崩溃。我找到了一个similar question,但它说错误发生在200Mb之后,问题似乎有所不同。

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

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

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

2 个答案:

答案 0 :(得分:0)

如果XML文件在磁盘上是24MB,那并不意味着分配的RAM将是24MB,可能会更多。 无论如何,Windows EXE文件可能具有最大HEAP限制,可以从Visual Studio增加see link..

答案 1 :(得分:0)

我对马克思解决这个问题的建议是错误的。尽管在某些情况下增加堆可能会有所帮助,但是当您有太多小节点时,QDomDocument可能会变得大到2GB并且它是它的限制。我想最好的方法是使用XmlStream读者和作者。