我正在使用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对象使用更多内存,或者你认为这是一个不同的问题?
答案 0 :(得分:0)
如果XML文件在磁盘上是24MB,那并不意味着分配的RAM将是24MB,可能会更多。 无论如何,Windows EXE文件可能具有最大HEAP限制,可以从Visual Studio增加see link..
答案 1 :(得分:0)
我对马克思解决这个问题的建议是错误的。尽管在某些情况下增加堆可能会有所帮助,但是当您有太多小节点时,QDomDocument可能会变得大到2GB并且它是它的限制。我想最好的方法是使用XmlStream读者和作者。