Я использую 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 заполняет память, чтобы можно было обнаружить неинициализированные переменные.
Это значение выбирается специально, так что это «недопустимый адрес памяти» — таким образом, вы не можете случайно или преднамеренно использовать память неинициализированной переменной, не получив какой-либо ошибки или ловушки.
Других решений пока нет …