向大家请教一个问题,当创建了一个COM对象实例的时候,为什么不能用new和delete控制COM对象实例的生命周期,有些资料上说,因为还有别的应用程序会用这个COM对象实例,我对这一点不太理解,还有什么应用程序会用这个对象实例呢?望指教

解决方案 »

  1.   

    用new创建没有创建类厂,方法并不推荐
    而且,没有类厂,你无法得到指针把?再有,组建可以被多个线程同时访问,看看接口计数
      

  2.   

    用CComPtr或CComQIPtr这样的智能指针来做.
      

  3.   

    1, com提供位置透明性,所以内存的分配应该由com进行管理以消除不同平台可能造成的差异。
    2。com是可重用组件的二进制标准。一般提供类型库而不提供。h文件,无法使用new和delete;
    3。com提供了一个间接层次为创建组件提供了统一的接口,只需要知道clsid就可以了,而用new生成类实例需要硬编码,不通用。
      

  4.   

    你可以用new,delete.用了之后你的组件就不叫做COM组件了
      

  5.   

    COM对象的生命周期是通过引用记数来控制的,不是由你的程序来控制的,因为COM对象可能被多次引用。
    要手工new出一个COM对象也不是不可以,但是你必须知道COM对象类,所以一般只能在组件程序内部使用。
      

  6.   

    com组件的一个实例可以有多个接口连接到多个客户上,所以要使用AddRef(),
    Release()来管理组件生存期。
      

  7.   

    我怎么没有想到这个问题,看到例题,我就只想按照上面说的作个东东,照葫芦画瓢,要是进程外的操作控制都new,delete com就太吓人了。