【问题标题】:A weird memory leak problem一个奇怪的内存泄漏问题
【发布时间】:2009-03-10 10:13:57
【问题描述】:

我使用一个 ActiveX 控件,它只是一个 HTTP 处理程序。它发出一个 HTTP 请求,获取响应并向用户触发一个事件。当用户没有请求时,ActiveX 控件几乎处于休眠状态。它只是等待用户请求发送另一个 HTTP 请求。

只要 OCX 所在的窗口没有改变(失去焦点、获得焦点等),内存就会保持平静。对于上述每个操作,我都会丢失大约 400 个字节。

我应该在哪里寻找可能的泄漏?

【问题讨论】:

  • 您提供的信息不够。请添加最详细的描述(可能带有部分代码)。
  • @MSN :-) 谢谢。我忘记提到的一个警告是在 MFC、C++ 应用程序中它不再泄漏。但是在 .Net C# 应用程序中,即使在 OANCCACHE=1 环境变量设置之后它也会泄漏。可能是 .Net AxInterop 的东西。在 .Net 世界中使用 windbg 来对抗泄漏非常困难 :-(

标签: c++ memory-leaks activex ocx


【解决方案1】:

假设 HTTP 字符串通过BSTRs 向下传递,您可能会遇到BSTR caching。要进行验证,您需要将环境变量 OANOCACHE 设置为 1 或直接调用 OaSetNoCache()。环境变量应该更容易测试。

【讨论】:

    【解决方案2】:

    寻找可能检测到这种泄漏的现成分析工具(甚至 VC 中的调试模式也可以选择跟踪泄漏的分配)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-06
      • 2015-05-09
      • 2021-03-28
      • 2020-12-19
      • 2011-04-01
      • 2012-03-07
      • 2011-08-24
      相关资源
      最近更新 更多