我正在使用IXLMDOMDocument使用以下命令从流中加载xml文件

IXMLDOMDocument *pDomDoc = pDomDoc->load(vtHtmlSource, &vfSuccess);

加载流(包含xml内容)后,它会创建一个样式表,以便正确获取内容ident。上面的部分正常工作。我对此很确定,但是之后,通过执行以下操作来转换节点(样式表输入bstrRtf)-
BSTR bstrRtf;
hr  = pDomDoc->transformNode(m_pStyleSheetNode, &bstrRtf);
//on debugging we get m_pStyleSheetNode = 0x0000000002b77ba8 that means it is correct and stylesheet is created properly.
//but bstrRtf = 0xcccccccccccccccc <Bad Ptr>  = CXX0030: Error: expression cannot be evaluated
//that means there is some problem here

if (hr) {
    hr = HRESULT_FROM_WIN32(GetLastError()); //this hr surprisingly returns OK(hr = S_OK)
};

我不知道为什么或如何。它不应该这样做,因为在bstrRtf中,我们有一个非常奇怪的值。我希望它会带来一些错误,但是我不知道为什么会这样。

有人可以解释bstrRtf = 0xcccccccccccccccc <Bad Ptr>的含义吗?何时会出现此类错误? 0xcccccccccccccccc <Bad Ptr>是什么意思?

当我将其初始化为零时,调试时的错误是instance->m_bstrRtf = 0x0000000000000000 <Bad Ptr>。而不起作用。但是为什么在此之后仍返回S_OK?

最佳答案

bstrRtf尚未初始化-尚无有效值。 0xcccccccccccccccc的实际值是MS用来填充内存的值,以便可以检测未初始化的变量。

专门选择此值是为了使其不是“有效的内存地址”-这样一来,您就不会偶然或有意使用未初始化变量的内存而不会出现某种错误或陷阱。

07-24 09:26