首页  编辑  

COM中内存使用

Tags: /超级猛料/COM、ActiveX,DDE/COM_ DCOM/   Date Created:

COM 是基于二进制的对象重用方式,
为了能够在不同的环境中使用COM组件,COM对内存的分配和释放是有要求的,即
要通过IMalloc接口来分配和释放内存(IMalloc::Alloc, IMalloc::Free),或者
调用CoTaskMemAlloc, CoTaskMemFree。同时,COM对内存的分配和释放的职责
也是有规定的,对于[in]参数,内存应该由Client分配和释放,对于[out]参数,
内存由Server分配,但是由Client释放,对于[in,out]参数,内存可以在Client
端分配,在Server端可以被释放,然后再分配,最后在Client端释放。
COM其实对一个熟悉C++的程序员来说并不是很困难,仔细研究一下从类重用方式
转化到二进制重用的方式所碰到的问题,就会明白COM为什么会是这样的,而且本质
上来说,COM和Class没有多少区别。