DOMDocument C ++内存管理

| 有关C ++中DOM *类createXXX方法的问题。为了释放从DOM * createXXX方法返回的内存,我是否需要做一些特殊的事情? 例如(为了简化起见,删除了转码,并删除了与转码操作相关联的var的相关发行版):
pImplement = DOMImplementationRegistry::getDOMImplementation(\"LS\");
DOMDocument* pDoc = pImplement->createDocument(\"Examples\", \"example\", NULL );
DOMElement* pRoot = pDoc->getDocumentElement();

DOMElement* firstElement = pDoc->createElementNS((\"Examples\", \"example\");
DOMElement* secondElement = pDoc->createElementNS(\"Examples\", \"example2\");

DOMAttr* name = pDoc->createAttribute(\"Name\");

XMLCh* somenameValue = XMLString::transcode(\"Fred\");
name->setValue(somenameValue);

secondElement->setAttributeNode(name);
firstElement->appendChild(secondElement);
当我最终离开该方法时,是否必须对firstElement,secondElement,name进行特殊处理才能从createXXX方法中释放内存?还是pdoc拥有所有内存,我必须等待销毁DOMDocument? 如果增加讨论的内容,我将遍历名称/值逻辑并将多个属性添加到secondElement。 谢谢。     
已邀请:
根据我使用DOM类的经验,您不必删除附加到DOM树的任何内容。例如,您将子项“ 1”附加到元素“ 2”。当后者被释放时,它也会释放
secondElement
。但是,我在这里看到两件事会泄漏。首先,您不要在DOM树中插入
firstElement
,其次,您离开时不会明确删除
pDoc
。您必须释放元素或将其添加到DOM树中,然后在代码中的后面将其删除。     
注意:以所涉及功能的名称,我假设您正在谈论Xerces-C。 您只需要在树的根上调用release(可以是DOMElement(仅删除树的“分支”)或DOMDocument(删除整个树))。 因此,在末尾添加对ѭ6的调用将有助于释放文档和附加到该文档的所有节点的内存。     

要回复问题请先登录注册