窗口 – CoTaskMemAlloc的使用?

前端之家收集整理的这篇文章主要介绍了窗口 – CoTaskMemAlloc的使用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
什么时候适合使用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对象接收内存并释放.

原文链接:https://www.f2er.com/windows/371090.html

猜你在找的Windows相关文章