因为做windows程序需要获取IE所指向的地址,我在代码中写了这么一段
CComQIPtr pWb(pWebBrowser2);
if (pWb)
{
BSTR bstrUrl;
pWb->get_LocationURL(&bstrUrl);
m_strUrl = bstrUrl;
}
if(pWebBrowser2){
return TRUE;
}
这段代码看似没有什么问题,但是执行到return的时候就会出现标题中的内存访问异常,追踪了大半天,我发现罪魁祸首是CComQIPtr,如果我把它换成IWebBrowser*,那么就没有问题,所以在CComQIPtr的作用域中,如果出现return,那么就会出现问题,我把代码改成了下面的样子
{
CComQIPtr pWb(pWebBrowser2);
if (pWb)
{
BSTR bstrUrl;
pWb->get_LocationURL(&bstrUrl);
m_strUrl = bstrUrl;
}
}
if(pWebBrowser2){
return TRUE;
}
