c++ - IMalloc_Free 和 IMalloc_release 的替代品
问题描述
为了释放SHGetFolderLocation()
API 使用的内存,我使用IMallloc_Free()
和IMalloc_Release()
.
包含时编译得很好
#define COBJMACROS
#define CINTERFACE
但是,在某些文件中,特别是包含 ATL 头的文件,这会导致编译器问题。然而,那里pMalloc->Free()
和pMalloc-Release()
工作。
是否有任何适用于这两个文件的免费和发布方法?
解决方案
通常不会,您要么使用 C 方式来处理 COM,要么使用 C++ 方式。
但是,特别是IMalloc
在这里,只需使用它CoTaskMemFree
。默认IMalloc
和CoTaskMemFree
兼容,COM 的分配与它们兼容。
SHGetFolderLocation
被记录为被释放ILFree
,但请参阅ILFree 文档中的备注。
另请参阅如何使用 IMalloc::Free?. 链接的帖子解释说,在旧系统中,shell 分配可能与 COM 分配不兼容,因此您不能使用IMalloc::Free
or CoTaskMemFree
,ILFree
但现在可以(假设您不支持历史操作系统)。
推荐阅读
- c++ - 您只需为您使用的东西与继承付费
- android - 如何在 Android 中获取当前连接的 BLE 外围设备
- apache-zookeeper - ZooKeeper(InterProcessMutex)中锁路径参数如何工作?
- python - 实时视差图项目:无法识别颜色图视差(OpenCV Python StereoBM)
- x3d - 在哪里可以找到 X3D-Edit 3.3 更新的下载
- java - 尝试在进行事务时在空对象引用上调用虚拟方法“int java.lang.String.length()”
- go - Beego如何支持HTTPS
- python - Python:按顺序执行步骤
- selenium-ide - 如何使用 Selenium IDE 在新选项卡中运行测试
- javascript - Javascript游戏中的对象碰撞