代码之家  ›  专栏  ›  技术社区  ›  sharptooth

如果sta线程不能发送Windows消息,它为什么会“泄漏少量内存”?

  •  0
  • sharptooth  · 技术社区  · 15 年前

    仔细阅读后 this KB article 我注意到那里有一个有趣的陈述。文章说,如果我有一个STA线程,而该线程不发送Windows消息,那么该线程

    • 将无法从COM服务器接收COM事件
    • 可能导致消息广播挂起(因此有时会导致死锁)
    • 令人惊讶的是… 会泄漏少量内存

    虽然前两个语句相当合理——Windows消息用于向单线程公寓中的对象发送COM调用——但我根本没有得到第三个语句。

    为什么一根线 泄漏少量内存 “如果它不发送Windows消息?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Damien_The_Unbeliever    15 年前

    您无法发送的消息-它们必须排队 在某处 等待你最后开始派遣他们的那一刻。那个队列将使用一些内存。

        2
  •  3
  •   Chris Becke    15 年前

    我可以想象,因为一个结构被分配,并与消息一起发布。 如果未处理消息,则包含消息参数的结构将不会被释放。