BSTR bstrRtf = 0xcccccccccccccccc <Bad Ptr> при отладке ( = CXX0030: ошибка: выражение не может быть оценено)

Я использую 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 даже после этого??

1 ответ

bstrRtf не инициализирован - у него нет действительного значения. Фактическая стоимость 0xcccccccccccccccc это то, чем MS заполняет память, чтобы можно было обнаружить неинициализированные переменные.

Это значение выбрано так, что оно "не является действительным адресом памяти" - таким образом, вы не можете случайно или преднамеренно использовать память неинициализированной переменной, не получив какой-либо ошибки или ловушки.

Другие вопросы по тегам