Вот исходный код моей функции:
bool FieldModel::updateNode(QDomNode &node,const QString &parent){
QDomElement rootOfTag;
rootOfTag=fieldState.firstChild().firstChildElement(parent);
qDebug()<<"Before"<<fieldState.toString();
QDomNodeList sameTags=rootOfTag.elementsByTagName(node.firstChild().toElement().tagName());
for(uint i=0;i<sameTags.length();i++){
QDomNode nodeToReplace=sameTags.item(i);
if(nodeToReplace.toElement().attribute("id")==node.firstChild().toElement().attribute("id")){
nodeToReplace.parentNode().replaceChild(node,nodeToReplace);//Cause Memory Leak
qDebug()<<"After"<<fieldState.toString();
return true;
}
}
insertNode(node,parent);
return true;
}
Использование памяти этой моей программой строго увеличивается, но когда я удалил строку nodeToReplace.parentNode().replaceChild(node,nodeToReplace);
, программа использует стабильный объем памяти.
Я контролировал fieldState(QDomDocument)
, и он не растет, пока я использую replaceChild
(я делаю небольшие изменения). В чем может быть проблема?
Спасибо.