BSTR bstrRtf = 0xcccccccccccccccc & lt; Bad Ptr & gt; при отладке (= 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 заполняет память, чтобы можно было обнаружить неинициализированные переменные.

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]