1

我在我的一个应用程序(通过 PINVOKE 使用 C++ dll 的 .NET 应用程序)上运行了调试诊断工具 v1.2,它显示以下警告:

usp10.dll 负责 9.25 MB 的未完成分配。以下是前 2 个内存消耗函数:usp10!MapFullFile+14:9.19 MBytes 的未完成分配。usp10!AllocateCMAPtables+e6:18.50 KB 的未完成分配。

我不知道这个 USP10.DLL 是从哪里来的。谷歌告诉我这是一些渲染 unicode-encoded text 的服务。任何想法为什么我看到这个警告?

4

1 回答 1

4

Usp10.dll 是 Uniscribe 脚本处理器。它处理文本的正确格式,任何将文本输出到屏幕的程序都会依赖它。CMap 是一种字体数据结构。您看到它所做的是缓存字体数据,每次需要数据时从字体文件中检索它太昂贵并且会使文本渲染太慢。

在 DLL 被卸载之前,这样的缓存不会被破坏。所以你真正看到的是你的工具中的一个缺陷。它在正常的进程清理发生之前过早地报告内存泄漏。您应该向供应商提交缺陷报告。

于 2012-10-10T14:00:27.737 回答