COM组件是个DLL,当客户程序要用它时就要把它装到内存里。另一方面,一个组件也不是只给你一个人用的,可能会有很多个程序同时都要用到它。但实际上DLL只装载了一次,即内存中只有一个COM组件这句话对吗?
另外:我new一个进程内COM的对象和new一个进程外COM的的对象在具体细节上差别在哪?

解决方案 »

  1.   

    不是,不同的进程调用同一个组件时,在不同的进程中都会装载一次。同一进程中调用dll中不同的组件,只会装载一次。
      

  2.   

    进程装载DLL不是只是将DLL映射到进程的地址空间吗?如果按照“映射”的说法,是不是有可能意思就是说当多个进程调用同一个DLL的时候,DLL在实际的物理内存中只存在一个副本,每个进程分别“映射”一次呢?
      

  3.   

    DLL只加载到内存一次, 其他是地址映射;
      

  4.   

    但实际上DLL只装载了一次,即内存中只有一个COM组件 正确
      

  5.   

    进程内组件是通过dll将com装载到客户机进程的地址空间,所以多个进程可以通过dll装载同一个com这个是没有问题的