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

静态CComPtr变量

  •  2
  • anand  · 技术社区  · 16 年前

    因为我们不能控制静态变量的破坏,而且它可能在初始化之后发生。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Phil Booth    16 年前

    如果你采取了适当的预防措施 CComPtr 作为一个静态成员并不是天生的邪恶。

        2
  •  0
  •   Andrey    16 年前

    无论如何,这是个坏主意

        3
  •  0
  •   V. Baur    9 年前

    正如谢尔盖在评论中所说,我认为这是不好的。静态对象的析构函数在main终止后调用,如第节所述§ 3.63. C++ 03标准:

    http://www.geeksforgeeks.org/static-objects-destroyed/ .

    但是 CoUninitialize 在主线程终止之前调用清理主线程上COM库的。CoUninitialize将按照msdn文档中的说明清理所有剩余资源。我们应该在调用CoUninitialize之前调用COM对象的Release方法,因为它们在调用之后将不再存在,因此我们应该确保在调用CoUninitialize之前调用CComPtr析构函数。因此,CComPtr不应该是静态的。