我在我的一个应用程序(通过 PINVOKE 使用 C++ dll 的 .NET 应用程序)上运行了调试诊断工具 v1.2,它显示了以下警告:
usp10.dll 负责 9.25 MB 的未完成分配。以下是前 2 个内存消耗函数: usp10!MapFullFile+14:9.19 兆字节的未完成分配。 usp10!AllocateCMAPtables+e6:18.50 KB 的未完成分配。
我不知道这个 USP10.DLL 是从哪里来的。 Google 告诉我这是 some service to render unicode-encoded text .我为什么会看到此警告,有什么想法吗?
最佳答案
Usp10.dll 是 Uniscribe 脚本处理器。它处理正确的文本格式,任何将文本输出到屏幕的程序都将依赖于它。 CMap 是一种字体数据结构。您看到它所做的是缓存字体数据,每次需要数据时都从字体文件中检索它太昂贵并且会使文本呈现太慢。
在卸载 DLL 之前,这样的缓存不会被销毁。所以您真正看到的是您工具中的缺陷。它在正常进程清理发生之前过早报告内存泄漏。您应该向供应商提交缺陷报告。
关于c++ - USP10.DLL 中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12819488/