解决 ActiveX 0x7730DCBB (ntdll.dll) (iexplore.exe 中)处有未经处理的异常: 0xC0000374: 堆已损坏。 (参数: 0x77344268)。

STDMETHODIMP CUkey::exportId(BSTR* ret)
{	
	CStringA str ;
	str.Append("zzzzz");	
	*ret = _bstr_t(str);
	return S_OK;
}

js调用IE崩溃:

0x7730DCBB (ntdll.dll) (iexplore.exe 中)处有未经处理的异常: 0xC0000374: 堆已损坏。 (参数: 0x77344268)。


调整代码如下

STDMETHODIMP CUkey::exportId(BSTR* ret)
{	
	CStringA str ;
	str.Append("zzzzz");
        *ret = CComBSTR(str).Copy();
	return S_OK;
}

正常执行。


原因:原来的代码并没有对返回数据分配空间,函数退出后,str被释放了。ActiveX访问到了被释放的空间导致出错。


你可能感兴趣的:(解决 ActiveX 0x7730DCBB (ntdll.dll) (iexplore.exe 中)处有未经处理的异常: 0xC0000374: 堆已损坏。 (参数: 0x77344268)。)