1

我正在使用 IXLMDOMDocument 从流中加载 xml 文件

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

加载流(包含 xml 内容)后,它会创建一个样式表以ident正确获取内容。上述部分工作没有任何问题。我确信这一点,但在那之后,当 A 转换节点(样式表为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 ?

4

1 回答 1

2

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

这个值是专门挑选出来的,所以它“不是一个有效的内存地址”——这样,你就不会意外或故意使用未初始化变量的内存,而不会出现某种错误或陷阱。

于 2013-08-02T13:56:27.950 回答