在一个DCOM相关程序的调试中吃尽了苦头!事件源在激发事件时无端地产生内存泄漏,最后终于查出不是我的错!
ATL 的一个头文件 atlevent.h 的第165行处的一个函数 __ComInvokeEventHandler 的实现代码存在问题,应该把它改为:inline HRESULT
__ComInvokeEventHandler(IDispatch* pDispatch, DISPID id, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult) {
if (pVarResult != 0) {
::VariantInit(pVarResult);
}
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
UINT nArgErr = (UINT)-1;
HRESULT hr = pDispatch->Invoke(id, IID_NULL, 
                               LOCALE_USER_DEFAULT, wFlags, 
                               pDispParams, pVarResult, 
                               &excepInfo, &nArgErr);
IErrorInfo* perrinfo = 0;
if (FAILED(hr)) {
_com_handle_excepinfo(excepInfo, &perrinfo);
SetErrorInfo(0, perrinfo);
perrinfo->Release();
}
return hr;
}此贴的目的在于收集VC.net的BUG,希望大家把知道的BUG都贴上来,

解决方案 »

  1.   

    我写的一个脚本引擎,debug版本可以用,release怎么都用不起来。
    555~~
      

  2.   

    不知道是不是我代码的原因,如果把对话框里面的tree的Scroll熟悉设置为false,那么程序执行时,向该tree内添加的Item都是空白的,也就是没字符显示,但是事实上是添加进去了的.我的环境是:WindowsXP+SP1 VS6英文企业版+SP5 VS.NET中文企业版7.0.9486如果转换成NET格式,一样的问题.但是如果重新在VS.NET创建一个项目,那么在第一次向tree里面添加Item没问题,然后继续添加和删除都没问题,但是在你把添加的Item都删除的时候,再添加又出现这样的问题了我估计就是Bug!!!