【发布时间】:2013-07-01 14:54:47
【问题描述】:
简短版: XercesDOMParser* 和 DOMDocument* 在它们用于创建的 DOMElement* 之前超出范围是否安全?
加长版:
在下面的代码 sn-p 中,我创建了一个本地 XercesDOMParser* 和 DOMDocument* 以获取文档的根元素并将其存储在成员 DOMElement* 变量中。 XercesDOMParser* 和 DOMDocument* 都在构造函数的末尾超出范围,但 DOMElement* 作为成员变量存在。这个可以吗?到目前为止,它似乎有效,但我很担心以后可能会遇到问题。
JNIRequest::JNIRequest(JNIEnv *env, jobject obj, jstring input)
{
char *szInputXML = (char*) env->GetStringUTFChars(input, NULL);
XMLPlatformUtils::Initialize();
XercesDOMParser* pParser = new XercesDOMParser();
XMLByte* xmlByteInput = (XMLByte*) szInputXML;
xercesc::MemBufInputSource source(xmlByteInput, strlen(szInputXML), "BufferID");
pParser->parse(source);
DOMDocument* pDocument = pParser->getDocument();
/* This next variable is a DOMElement* */
this->_pRootElement = pDocument->getDocumentElement();
}
【问题讨论】:
标签: xerces-c