Моя программа разбивается каждый раз, когда я пытаюсь сохранить COM-указатель в структуре, а затем попытаюсь использовать исходный указатель. У меня нет отладочного доступа, чтобы точно сказать, что случилось.Сохранение COM-указателя в структуре
pRend->cp = cpRT;
ID2D1SolidColorBrush *scBrush;
ERF(cpRT->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::CornflowerBlue), &scBrush));
Он падает на CreateSolidColorBrush. Однако, если я прокомментирую pRend-> cp = cpRT, это не так. Кстати, pRend-> cp и cpRT имеют тип ID2D1HwndRenderTarget *.
Да. var не указывает нигде, пока вы не назначите ему цель, будь то куча (из malloc) или другая переменная (var = & data_var). Если вы просто используете его немедленно, он перезапишет некоторый случайный бит памяти в зависимости от того, что осталось в нем, и может потерпеть крах (или сбой более тонко). – puetzk
Wow я не знал, что O_O – scrutr
Не используйте malloc. Используйте новое в своей структуре. Таким образом, когда вы вызываете delete (не бесплатно), будет вызван деструктор умного указателя. – jmucchiello