加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

窗口 – CoTaskMemAlloc的使用?

发布时间:2020-12-13 20:10:06 所属栏目:Windows 来源:网络整理
导读:什么时候适合使用CoTaskMemAlloc?有人可以举个例子吗? 天哪,我不得不想一会儿这个 – 我已经用ATL做了大量的小规模COM编程,很少有使用它. 有一种情况,请注意:Windows Shell extensions.如果您正在处理一组文件系统对象,则可能需要处理PIDLs(指向ID列表的
什么时候适合使用CoTaskMemAlloc?有人可以举个例子吗?
天哪,我不得不想一会儿这个 – 我已经用ATL做了大量的小规模COM编程,很少有使用它.

有一种情况,请注意:Windows Shell extensions.如果您正在处理一组文件系统对象,则可能需要处理PIDLs(指向ID列表的指针).这些是奇怪的小文件系统对象抽象,它们需要使用COM感知分配器(如CoTaskMemAlloc)显式分配/释放.还有一个替代方案,从SHGetMalloc(不推荐使用)或CoGetMalloc获取的IMalloc接口指针 – 它只是一个使用的抽象层,因此您的代码不会绑定到特定的内存分配器,并且可以使用任何适当的内存分配器.

使用CoTaskMemAlloc或IMalloc而不是malloc()的观点是,内存分配/释放需要是“COM感知”,以便在运行时执行其分配和释放,即使分配和释放通过完全不相关的代码完成(例如Windows分配内存,将其传输到C代码,稍后释放,或者您的C代码分配,将其传输给其他人稍后释放的VB代码). malloc()和new都不能与系统的运行时堆互操作,因此您无法使用它们来分配内存以传输到其他COM对象,或从其他COM对象接收内存并释放.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读