我使用一个 ActiveX 控件,它只是一个 HTTP 处理程序。它发出一个 HTTP 请求,获取响应并向用户触发一个事件。当用户没有请求时,ActiveX 控件几乎处于休眠状态。它只是等待用户请求发送另一个 HTTP 请求。
只要 OCX 所在的窗口没有改变(失去焦点、获得焦点等),内存就会保持平静。对于上述每个操作,我都会丢失大约 400 个字节。
我应该在哪里寻找可能的泄漏?
我使用一个 ActiveX 控件,它只是一个 HTTP 处理程序。它发出一个 HTTP 请求,获取响应并向用户触发一个事件。当用户没有请求时,ActiveX 控件几乎处于休眠状态。它只是等待用户请求发送另一个 HTTP 请求。
只要 OCX 所在的窗口没有改变(失去焦点、获得焦点等),内存就会保持平静。对于上述每个操作,我都会丢失大约 400 个字节。
我应该在哪里寻找可能的泄漏?
假设 HTTP 字符串是通过BSTR
s 传递的,您可能会遇到BSTR
缓存。要进行验证,您需要将环境变量设置OANOCACHE
为 1 或OaSetNoCache()
直接调用。环境变量应该更容易测试。
寻找可以检测到这种泄漏的现成分析工具(甚至 VC 中的调试模式也可以选择跟踪泄漏的分配)。