c++中的COM对象管理
COM object management in C++
假设您创建了一个COM对象,表示Windows系统中所有的DVD驱动器。您从中检索所有必要的信息并将其显示给用户。如果在某个地方有"刷新"按钮(如果将一些驱动器添加到系统中),那么管理COM对象的正确策略是什么?
1)创建管理DVD驱动器信息的类。当DVD信息窗口被创建(带有"刷新"按钮)时,创建这个类的实例,并在窗口被销毁时销毁它。COM对象在构造函数中创建,直到类实例被销毁为止。
2)创建创建COM对象的函数(可能是更一般的类的方法),检索所有信息并销毁它。当创建DVD信息窗口时,当用户点击"刷新"按钮时,它被调用。
底线是你是否应该保留COM对象,如果它被频繁使用或"以防万一"?保持COM对象存活或每次创建和销毁它,哪个代价高?如果答案是相当确定的,是不是所有的Windows对象都是这样?如果不是,如何知道在哪种情况下哪种策略更合适?谢谢。
没有这样的规则。
这不是很正确,但是c++中的COM对象只是一个类的实例。这个对象有不同的创建方式。在COM的情况下,它具有更大的可扩展性。但是在CLSCTX_INPROC_SERVER的情况下,如果我们与c++中使用new创建对象进行比较,则创建对象的成本并不高。所以,我认为你的问题的答案与问题的答案是一样的:如果我不知道一些类的构造函数会运行多长时间,我可以频繁地创建这样一个类的实例吗?
但是,再一次,如果你认为调用CoGetClassObject() (CoCreateInstance())对你来说太昂贵了,那么尝试尽可能长时间保存对新创建对象的引用
相关文章:
- 我们可以通过 IPC 传递具有动态管理成员的类对象吗?
- 创建跨平台 C++ 触摸管理器.在 c++ 中传递 Objective-c 对象涉及代码
- 管理器类和对象类之间的通信
- 是否可以在专用内存空间中分配一个为提升管理共享内存而创建的对象
- 如何将指针从unique_ptr传递到另一个对象并管理寿命
- 模板对象管理器,参数不正确
- C++ 对象内存管理
- 编写安全包装类以管理用户定义对象的指针
- 如何管理和处理仅在堆上创建的类的对象
- 一类应管理其实例化对象
- 智能指针列表-管理对象生存期和指针有效性
- C++管理对象
- 删除管理对象c++/cli
- C++RAII来管理对象状态的更改和恢复
- STL 容器和内存管理 - 对象列表与指向对象的指针列表
- c++:如何管理对象生命周期和依赖关系
- 当C++代码用作 C# 类时,如何管理 C# 对象的内存
- 共享 PTR - C++ 如何使用引用计数管理对象缓存
- 如果我在管理C++对象内存的目标 C 中混合C++代码,ARC 会处理它
- 如何管理对象之间的一对多关系?(移动相关)