You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WinUI 3应用中使用MFC常规DLL时出现内存泄漏问题

WinUI 3 结合MFC常规DLL的内存泄漏问题

在WinUI 3应用中使用MFC常规DLL时出现内存泄漏,仅当通过window.content()或Frame.Navigate()方法设置页面内容时才会触发泄漏;若仅激活窗口但不设置页面内容,则不会产生泄漏,但业务需求需要同时显示页面内容和使用MFC DLL。

已在示例项目中复现该问题,测试环境如下:

  • Microsoft Visual Studio Professional 2019(版本16.11.8)
  • Debug x86编译模式
  • Windows 10 20H2(Build 19042)

泄漏表现:关闭应用后,输出面板会显示检测到内存泄漏。移除MainPage.xaml中的内容后,泄漏数量会减少一个,推测是Page未被销毁导致的泄漏。

MainPage.xaml代码如下:

<Page>
    <StackPanel>
        <Button>Click me</Button>
    </StackPanel>
</Page>

测试场景:仅在WinUI项目中声明了一个来自MFC DLL的类CTestClass对象,该DLL通过.lib链接到WinUI项目。

复现步骤

  • 下载存在泄漏的示例项目
  • 解压后在指定VS环境的Debug x86模式下构建项目
  • 以调试模式运行应用
  • 关闭应用
  • 查看输出标签页的内存泄漏提示

预期行为

应用关闭后不应检测到内存泄漏

项目依赖NuGet包

Microsoft.WindowsAppSDK.1.2.221116.1
Microsoft.Windows.SDK.BuildTools.10.0.22621.755
Microsoft.Windows.ImplementationLibrary.1.0.211019.2
Microsoft.Windows.CppWinRT.2.0.210806.1

内容的提问来源于stack exchange,提问作者Mavaji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:35:13