一个奇怪的内存泄漏问题
我使用 ActiveX 控件,它只是一个 HTTP 处理程序。 它发出一个 HTTP 请求,获取响应并向用户触发一个事件。 当用户不请求时,ActiveX 控件几乎处于休眠状态。 它只是等待用户请求发送另一个 HTTP 请求。
只要 OCX 所在的窗口不发生变化(失去焦点、获得焦点等),内存就会保持平静。 对于上述每个操作,我都会丢失大约 400 个字节。
我应该在哪里寻找可能的泄漏?
I use an ActiveX control which is just a HTTP handler. It sends out an HTTP request, gets the response and fires an event to the user. When the user is not requesting the ActiveX control is pretty much dormant. It just waits for a user request to send another HTTP request.
As long as the window in which the OCX resides does not change (losing focus, getting focus, etc) the memory stays calm. For each of the above said operations I lose approx 400 bytes.
Where should I look for a possible leak?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设 HTTP 字符串通过
BSTR
向下传递,您可能会遇到BSTR
缓存。 要进行验证,您需要将环境变量OANOCACHE
设置为 1 或直接调用OaSetNoCache()
。 环境变量应该更容易测试。Assuming that the HTTP string is passed down via
BSTR
s, you might be running intoBSTR
caching. To verify, you'll want to set the environment variableOANOCACHE
to 1 or callOaSetNoCache()
directly. The environment variable should be easier to test with.寻找可以检测到这种泄漏的现成分析工具(甚至 VC 中的调试模式也可以选择跟踪泄漏的分配)。
Look to off-the-shelf profiling tools that may detect this leak (even debug mode in VC has an option of tracing leaked allocations).