如果STA无法发送Windows消息,为什么STA会“泄漏少量内存”?

时间:2010-10-19 14:03:42

标签: windows winapi com

在仔细阅读this KB article后,我注意到那里有一个有趣的陈述。文章说,如果我有一个STA线程,并且该线程没有调度Windows消息,那么该线程

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

虽然前两个语句相当合理 - Windows消息用于将COM调用分派给单线程公寓中的对象 - 我根本没有得到第三个。

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

2 个答案:

答案 0 :(得分:3)

我想是因为分配了一个结构,并随消息一起发布。 如果未处理该消息,则不会释放包含消息参数的结构。

答案 1 :(得分:1)

您未能发送的消息 - 它们必须在某处排队,等待您最终开始调度它们的那个命运时刻。该队列将使用一些内存。