【发布时间】:2021-11-08 11:13:09
【问题描述】:
为了释放SHGetFolderLocation() API 使用的内存,我使用IMallloc_Free() 和IMalloc_Release()。
包含时编译得很好
#define COBJMACROS
#define CINTERFACE
但是,在某些文件中,特别是包含 ATL 头的文件,这会导致编译器问题。但是,pMalloc->Free() 和 pMalloc-Release() 工作。
是否有任何适用于这两个文件的免费和发布方法?
【问题讨论】:
-
COBJMACROS宏启用便利包装器,以便从 C 访问 COM 对象。如果这与其他代码冲突,您可以查看便利包装器并在右侧找到扩展版本。 -
对 Shell 分配的所有内容使用 CoTaskMemFree。 docs.microsoft.com/en-us/windows/win32/api/combaseapi/…
-
SHGetFolderLocation(..., &pidl); ...; CoTaskMemFree(pidl);完全忘记 IMalloc -
@Sha3003 文档告诉你如何调用 CoTaskMemFree
标签: c++ c winapi header-files atl