BSTR bstrRtf = 0xcccccccccccccccc <调试时错误 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
未初始化-它还没有有效值。0xcccccccccccccccc
的实际值是MS在内存中填充的值,因此可以检测未初始化的变量。
这个值是专门挑选的,这样它就"不是一个有效的内存地址"——这样,你就不会意外或故意使用未初始化变量的内存而不会出现某种错误或陷阱。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- BSTR bstrRtf = 0xcccccccccccccccc <调试时错误 Ptr>( = CXX0030:错误:无法计算表达式)