繁体   English   中英

BSTR bstrRtf = 0xcccccccccccccccccc <Bad Ptr> 在调试时(= CXX0030:错误:无法评估表达式)

[英]BSTR bstrRtf = 0xcccccccccccccccc <Bad Ptr> on debugging ( = CXX0030: Error: expression cannot be evaluated)

我正在使用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尚未初始化-尚无有效值。 MS填充内存的实际值是0xcccccccccccccccc ,以便可以检测未初始化的变量。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM