Qt 会泄漏内存吗?

2023-12-26

如果我编译这个 Qt“hello world”:

#include <QtWidgets/QApplication>
#include <QtWidgets/QPushButton>


int main( int argc, char **argv ) {
  QApplication a( argc, argv );

  QPushButton hello( "Hello world!" );
  hello.resize( 100, 30 );

  hello.show();
  return a.exec();
}

在 Debian Stable(使用系统 Qt 库)和 GCC 12.2(从源代码安装)上

$ g++ -fsanitize=address hello.cpp -L /usr/lib/x86_64-linux-gnu -lQt5Core -lQt5Gui -lQt5Widgets -I /usr/include/x86_64-linux-gnu/qt5 -fPIC

当我关闭应用程序时,这会导致检测到泄漏:

$ ./a.out 

=================================================================
==3563910==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 6656 byte(s) in 26 object(s) allocated from:
    #0 0x7fea3b4801af in __interceptor_malloc ../../../../gcc-12.2.0/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x7fea3693c704  (/lib/x86_64-linux-gnu/libfontconfig.so.1+0x20704)

Indirect leak of 1600 byte(s) in 50 object(s) allocated from:
    #0 0x7fea3b47fb97 in __interceptor_calloc ../../../../gcc-12.2.0/libsanitizer/asan/asan_malloc_linux.cpp:77
    #1 0x7fea3693cd48  (/lib/x86_64-linux-gnu/libfontconfig.so.1+0x20d48)

Indirect leak of 519 byte(s) in 50 object(s) allocated from:
    #0 0x7fea3b437f3b in __interceptor_strdup ../../../../gcc-12.2.0/libsanitizer/asan/asan_interceptors.cpp:439
    #1 0x7fea3693bfa4 in FcValueSave (/lib/x86_64-linux-gnu/libfontconfig.so.1+0x1ffa4)

SUMMARY: AddressSanitizer: 8775 byte(s) leaked in 126 allocation(s).

这是误报吗?


我知道在 Qt Creator 中我们可以添加CONFIG += sanitizer sanitize_address in the .pro要启用的文件消毒剂我使用一个主窗口在一个简单的模板项目中进行测试。我在 Qt 5.15.2 中测试它,发现内存泄漏错误。

但当我测试它时Qt_6_2_3它工作正常。 所以我认为这与 Qt 5 版本有关,他们在 Qt 6 中修复了它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 会泄漏内存吗? 的相关文章

随机推荐

  • 背包问题(经典)

    所以我必须在课堂上解决背包问题 到目前为止 我已经提出了以下建议 我的比较器是确定两个主题中哪一个是更好的选择的函数 通过查看相应的 值 工作 元组 我决定迭代工作量小于 maxWork 的可能科目 为了找到在任何给定回合中哪个科目是最佳选
  • raw_input() 在输入后才会显示提示

    它实际上比标题暗示的更进一步 如果我在 main 中的任何地方有 raw input 那么在用户输入输入之前不会发生任何事情 包括在调用 raw input 之前应该发生的任何函数调用或输出 这是我的代码的一个非常简单的示例以及它运行时发生
  • Highcharts:每个系列是否可以有单独的绘图选项?

    我想在图表上有两个散点系列 一个线宽为 1 另一个没有线宽 据我了解 plotOptions适用于指定类型的所有图表 因此所有散点图要么有线宽 要么没有 是否可以将plotOptions应用于特定系列 除了下面列出的成员之外 该特定类型图的
  • 如何在 vue.js webpack 项目上正确设置 favicon.ico?

    我创建了一个vue webpack项目使用vue cli vue init webpack myproject 然后在下面运行该项目dev mode npm run dev 我收到这个错误 无法加载资源 服务器响应状态为 404 未找到 h
  • 如何在 SAML 2.0 Web 浏览器 SSO 的 AuthnRequest 中识别主体

    我是 SAML 新手 在完全理解完整的 SAML2 SSO 流程方面遇到了一些困难 具体来说 当服务提供商使用元素响应资源请求时 元素中的哪一部分数据标识要由身份提供商验证的主体 即用户 例如 在以下 AuthnRequest 中似乎没有任
  • scipy.stats.binned_statistic_dd() 中的输出

    我正在尝试使用scipy stats binned statistic dd http docs scipy org doc scipy reference generated scipy stats binned statistic dd
  • 安装tensorflow 2有问题

    我想练习tensorflow 2 但我尝试在anaconda环境中安装它失败了 我的问题是 如何安装tensorflow 2 如果可以在 anaconda 环境中完成 在我看来会更方便 我不需要理解下面的错误信息 只要我能使用tensorf
  • 使用代码中的“fb_ref”参数跟踪来自 Facebook 的点赞按钮推荐

    我们想使用属性fb ref 点赞按钮中的 ref 参数 以便跟踪推荐点击和转化 您是否有关于如何在我们的页面上进行此操作的教程或示例 当您使用ref点赞按钮上的参数 点击返回由该点赞按钮生成的网站 在引荐来源网址中包含两个额外参数 fb r
  • 在哪里可以阅读有关编程的内容? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ASP.NET MVC 将列表传递给 RouteData QueryString

    将值列表作为查询字符串传递的推荐方法是 www site com search value 1 value 2 value 3 value 4 ASP NET 很好地处理了这个问题 string value QueryString Get
  • 文件传输详细信息持续绑定,直到使用 WPF 在窗口中传输文件

    我已经创建了将文件从客户端传输到服务器的项目 我已经完成了文件传输并获取了文件传输的详细信息 例如文件名 something avi 和传输的文件百分比 10 如下所示 每当我传输文件时 我都会使用下面的事件处理程序来了解该文件转移的详细信
  • 如何进入封闭班? [复制]

    这个问题在这里已经有答案了 I know Class getDeclaredClasses 可以获取它声明的所有类 但不包括匿名类 我想知道有没有办法通过封闭类获取所有封闭类 例如 我想获取定义在中的所有封闭类Root用于测试目的 clas
  • 如何在 WPF 中创建可拖动到主窗口之外的面板?

    尝试在 Visual Studio 2008 中复制对接控件 我的应用程序为 FAA 重播 RADAR 环境 并且我希望双显示器用户能够将控制面板拖动到另一个显示器 以使主画布保持清晰 此功能类似于将 VS 中的不同面板拖到主窗口之外的方式
  • MIPS 伪指令、替换

    经过研究后 我发现这只是获得相同结果的方法的替代 如果我错了 请纠正我 example move s0 t1 可以替换为 add s0 zero t1 问题 怎样才能更换lw la sw bne 是的move指令可以并且被替换为add操作说
  • 当我使用 Control-C 中断 C# 控制台应用程序时会发生什么?

    当我使用 Control C 中断 C 控制台应用程序时会发生什么 进程被杀死了吗 内存被释放了吗 是finally块被执行 数据库连接会发生什么情况 如果应用程序是为调试或发布而构建的 或者在 Visual Studio 内部 外部运行
  • Angular 动态组件 AOT 问题

    由于一些业务逻辑 我必须读取动态组件 EntryComponents 的元数据 要读取元数据 以下是我的方法 使用读取模块的所有组件组件工厂解析器 使用组件名称和特定方法过滤掉类 创建组件并读取数据 销毁该组件 const factorie
  • 如何对多个项目使用 ETag / If-Match

    在 RESTful 接口中处理乐观锁定的推荐方法似乎是返回一个ETag来自 GET 并提供If Match在 PUT 上 即 GET items 1 gt gives client an ETag for a single item PUT
  • 从块返回 UIImage

    我有以下代码 UIImage getPublisherLogo check the cache if the logo already exists NSString imageUrl NSString stringWithFormat i
  • 与 Eclipse 编译器相比,为什么 javac 1.5 运行速度这么慢?

    我有一个 Java Maven 项目 其中包含大约 800 个源文件 其中一些由 javacc JTB 生成 使用 javac 编译需要花费 25 分钟 当我将 pom xml 更改为使用 Eclipse 编译器时 编译大约需要 30 秒
  • Qt 会泄漏内存吗?

    如果我编译这个 Qt hello world include