描述:
1、有一个vc写的log server组件,是用mfc写的com进程外服务器,不停的写log文件,
2、一个是vb写的com进程内组件ExtractData,通过他向log server请求log数据,并且将请求得到的数据以事件的方式通知控件LogViewer,
3、控件LogViewer也是vb写得控件,上面有一个datagrid和adodc控件,
4、通过vb那个组件ExtractData的函数HistSvrCallback_NewHistoricalData(这是log server接收到数据的通知函数)中将数据处理后加入到一个recordset中,然后通过它触发的事件来通知控件,将这个纪录集传给adodc控件的recordset,然后在datagrid里面显示log数据。
5、当我在一个程序中打开一个使用这个控件来显示数据的窗口,等数据取到后,然后关闭窗口,然后再打开,重复这样的过程,大约4个小时候(大约1000次这样的关闭窗口),程序使用内存会从17,344k增到29,792k,如果让他这样测试10个小时的话,使用的内存会长到300多m,我512m的机器,整个程序会死掉。请问一下什么问题会导致这样的memory leak啊
解决方案1:
用工具检查一下你的 log server, bounds checker 不错.
解决方案2:没法帮你!只能自己慢慢找!vb写的不应该有漏洞的,主要看看vc中的代码!看看处理BSTR*时候怎么写的,我想如果有,可能出现在转换上!BSTR转换成char*经常会出现问题如果不小心!
解决方案3:推荐 bounds checker