COM原理
+ -

COM 内存分配和释放

2022-02-17 54 0

于动态内存的申请和释放,一定要遵守“谁申请,谁释放”的原则。

为解决这个问题,COM函数内部根据实际需要动态申请内存,而调用者负责释放。虽违背了上述原则,但COM从方便性和效率出发,确实是这么设计的。

C语言 C++语言 Win32平台 COM IMalloc接口 BSTR
申请 malloc new GlobalAlloc CoTaskMemAlloc Alloc SysAllocString
重新申请 realloc   GlobalReAlloc CoTaskMemRealloc Realloc SysReAllocString
释放 free delete GlobalFree CoTaskMemFree Free SysFreeString

以上函数必须配对使用(如:new申请的内存,必须用delete释放)。

在COM内部,可使用任何类型的内存分配释放函数,但组件如果需要与客户进行内存的交互,则必须使用上表中的后三类函数族。

IMalloc接口是对 CoTaskXXX函数族的一个包装,并增强了一些功能,如:IMalloc::GetSize可取得尺寸,IMallocSpy可监视内存的使用;

0 篇笔记 写笔记

COM库的内存管理
由于COM组件程序和客户程序是通过二进制级标准建立连接的,所以在COM应用程序中凡涉及客户、COM库和组件三者之间内存交互(分配和释放不在同一个模块中)的操作必须使用一致的内存管理器。COM提供的内存管理标准,实际上是一个IMalloc接口:IID_IMalloc ={00000002-0000-......
COM 内存分配和释放
于动态内存的申请和释放,一定要遵守“谁申请,谁释放”的原则。为解决这个问题,COM函数内部根据实际需要动态申请内存,而调用者负责释放。虽违背了上述原则,但COM从方便性和效率出发,确实是这么设计的。C语言C++语言Win32平台COMIMalloc接口BSTR申请m......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!