如何释放Qthread对象的内存?

2024-06-24

我做过这样的事情:

//in the mainwindow's constructor
QThread *thr = new QThread;
soundWorker * work = new soundWorker;
connect(this,SIGNAL(playsound()),work,SLOT(process()));
work->moveToThread(thr);
thr->start();

我应该删除 thr 并在 mainwindow 的解构函数中工作吗?


您可以使用默认的 Qt 方式来管理内存,方法是将父级分配给QThread,即这样做:

QThread *thr = new QThread(this);//the mainwindow's is now the thread parent

在 Qt 中,父母负责管理孩子的记忆。就这样QThread需要时会自动删除。

那么,为了你的soundWorker,您有几种不同的解决方案。如果它的寿命和你的一样mainwindow,正如您在询问是否应该在析构函数中删除它时所暗示的那样mainwindow,您可以简单地使其成为非指针成员,然后它的存储持续时间将被自动处理。

不过,parent 是 Qt 特有的。一般来说,当您自己处理内存时,您应该使用包装器(例如智能指针)来启用RAII http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization.

进一步阅读:Qt 树和所有权模型 http://qt-project.org/doc/qt-5/objecttrees.html

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

如何释放Qthread对象的内存? 的相关文章

  • 为什么更新外键后引用约束会不一致?

    抱歉 这个模糊的标题很难用一句话来描述 我有 2 个实体User and UserAddress 其中 User 有 2 个外键DefaultInvoiceAddressId and DefaultDeliveryAddressId和 Us
  • 我们可以在 C# 中定义枚举的隐式转换吗?

    是否可以在 C 中定义枚举的隐式转换 可以实现这一目标的东西吗 public enum MyEnum one 1 two 2 MyEnum number MyEnum one long i number 如果没有 为什么不呢 有一个解决方案
  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • 在 2 个 .c 文件之间共享函数

    dir1有dir2 file1 c和file1 h dir2 有 file2 c 现在 如果我想在 file2 c 中访问 file1 c 中定义的函数 我需要在 file1 h 中声明它并在 file2 c 中包含 file1 h 这是一
  • 在子目录中构建共享库

    我正在尝试构建一个使用一些 C 代码的 R 包 我有一个编译为可执行文件的 C 库 可以从命令行调用 有一个与之关联的 Makefile 我正在尝试获取信息here http cran r project org doc manuals R
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • 如何处理作为参数传递到方法中的 Lambda 表达式 - C# .NET 3.5

    我对 Lambda 表达式的了解有点不稳定 虽然我可以编写使用 Lambda 表达式 又名 LINQ 的代码 但我正在尝试编写自己的方法 该方法采用一些 Lambda 表达式类型的参数 背景 我正在尝试编写一个方法 该方法从任何其他对象类型
  • 在 Windows 服务中使用 OleDb 从 Excel 读取数据?

    免责声明 我知道这是一种不好的做事方式 这是我们与客户的唯一选择 Problem 我们需要每隔 x 时间从 Excel 文件读取数据 数据通过第三方 Excel 插件不断变化 应用程序的环境是 Windows XP SP1 和 Net 2
  • MVVM 同步集合

    是否有一种标准化方法可以将 Model 对象集合与 C 和 WPF 中匹配的 ModelView 对象集合同步 我正在寻找某种类 可以使以下两个集合保持同步 假设我只有几个苹果 并且可以将它们全部保存在内存中 换句话说 我想确保如果我将 A
  • 用于 C/C++ 的独立跨平台 (Windows/Linux) 文件压缩?

    我正在寻找一个 最好是小的 C 或 C 开源库 我可以将其包含在我的 MIT 许可项目中 托管在 google 代码上 我是一名业余爱好 C C 程序员 所以我并不那么先进 但我只知道为名为 SA MP 的应用程序 适用于 Windows
  • Linux C++ 调试器

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • 嘲笑会员用户

    我目前正在开发一个 asp net mvc 2 应用程序 它使用默认的 SqlMembershipProvider 进行身份验证 我已经实现了一个控制器方法 通过调用读取当前用户的 ProviderUserKeyMembership Get
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • 在 C# 中为 ListBox 分配数据源时,如何从 ListBox 中删除所选项目?

    在 C 中为 ListBox 分配数据源时 如何从 ListBox 中删除所选项目 尝试删除时出现错误 设置 DataSource 属性后 无法修改项目集合 但是当我尝试从数据源 数据表 中删除项目时 它会抛出错误 因为 数据行不在当前行集
  • Task.Delay 到底是如何工作的?

    他们说 Task Delay 是一个异步 Thread Sleep 为了测试这一点 我写了下面的代码 我希望立即打印 One 然后 3 秒后将打印结果变量 15 2 秒后 将打印 Two 但似乎并非如此 一 不会立即打印 3 秒后打印 On
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • 有关 Endian 性和 .Net 的详细信息?

    我有几个关于字节顺序的问题 这些问题足够相关 我保证将它们作为一个问题提出 1 字节顺序是由 Net还是由硬件决定的 2 如果是由硬件决定的 我怎样才能在C 中找出硬件的字节序 3 字节序是否影响二进制交互 例如 OR AND OR 或移位

随机推荐

  • 如何使用 nexus/maven 将依赖项添加到第 3 方库

    我正在尝试专业地使用 Nexus m2eclipse maven 3 并且我有一个巨大的第 3 方库 需要很多依赖项 有没有什么方法可以通过将这个第三方库及其所有链接的依赖项上传到 Nexus 来减轻我的痛苦 这样任何需要它的人都只需为这个
  • Java棋盘游戏

    基本上 我正在用 java 创建一个棋盘游戏 并设法使用数组创建单元格 使其看起来像 10x10 网格 现在我已经对它们进行了编号 它们从左到右从上到下 如图所示 我正在创建一个类似于蛇和梯子游戏的游戏 但有自己的特色 问题是 如何创建类似
  • 使函数调用中的括号可选

    嘿 我即将重写我的 JavaScript 库的核心文件 并且我正在寻找更好的方法来完成所有事情 其中之一是我如何使括号可选 例如某些函数调用如下所示 Spark p content Hello World 还有其他人也这样 Spark br
  • 在 Android Studio 中重新启动系统后,项目视图未显示

    重新启动系统后 我无法查看 Android Studio 中任何项目的项目结构 以前 我可以通过进入 视图 gt 项目 来选择 项目视图 但 视图 菜单现在不显示此类选项 请看下图 今天早上这个问题就发生在我身上 解释 Fabric Cra
  • 如何在Linux下生成系统范围的唯一ID

    我正在使用多进程 Linux 系统 需要生成唯一的 ID 安全性不是考虑因素 因此 ID 生成器从零开始递增就可以了 而且它只是在本地计算机内 不涉及网络 显然 实现这一点并不难 但我只是想知道是否已经提供了任何东西 最好是轻量级的 这听起
  • GSM SIM800C 文本转语音音频流

    I have 我已经成功地能够向它发送 AT 命令并执行一些操作 但我真正想要的是文本转语音功能 我能够生成 AMR 音频文件 将其上传到模块的内部存储器 并在有人时播放它来电 但是来电者听到的消息将是动态的 并且 TTS 将实时运行 因此
  • 合并 PDF iTextSharp

    我在网上查看了一些示例 并提出了使用 iTextSharp 合并 pdf 的代码 但我收到一个错误 该文档没有页面 它失败于页面 writer GetImportedPage reader X 这是堆栈跟踪 at iTextSharp te
  • 如何使用自定义数据生成器进行 keras 图像增强?

    我正在使用 Keras 自定义生成器 我想对从自定义数据生成器返回的数据应用图像增强技术 我想要这些图像增强技术 ImageDataGenerator rotation range 40 width shift range 0 2 heig
  • UIDatePicker,显示带有年份和时间的完整日期

    你能有一个UIDatePicker在 DatePicker 上显示日 月 年和时间 或者我需要进行自己的自定义UIPickerView i e 2000 年 11 月 12 日星期一 5 20 AM 目前日期选择器 datePickerMo
  • 如果内容超出使用 JavaScript 的 html 表格的固定宽度,则将文本拆分到下一行

    我有一个 div 它由应用了不同样式的表格组成 我正在尝试实现一个布局 如果文本超过表格 td 的宽度 它应该转到下一行 但我不能这样做 我的代码是
  • 尽管代码是正确的,为什么这个程序会显示其他内容? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 include
  • 如何扩展 Selenium By.class 以创造更大的灵活性?

    我怎样才能延长硒By class创造更多的灵活性 我看了看By class http code google com p selenium source browse java client src org openqa selenium
  • jQuery outerHeight() 错误 - 在以下版本中无法正常工作1.8.3

    所以我有一个脚本可以均衡 x 轴上其他元素的高度 该脚本工作得很好 但只有当我使用 jQuery 1 8 3 时 问题似乎是由于outerHeight 功能 我试图找出进行了哪些更新outerHeight 对于 1 8 3 但我没有太多运气
  • strip_tags 不允许某些标签

    基于strip tags http php net manual en function strip tags php文档中 第二个参数采用允许的标签 但就我而言 我想做相反的事情 说我会接受标签script tags通常 默认 接受 但仅
  • PHP 中时间的乘法

    我需要在 PHP 中乘以时间 maritime 01 10 00 我需要增加这个 maritime到 5我想得到这样的答案 01 10 00 5 05 50 00 这是你应该做的 Step 1 将您的小时数转换为秒数 seconds str
  • 如何知道我安装的是哪个版本的 monotouch?

    如何知道我安装的是哪个版本的 monotouch 有多种方法可以获取版本号 从终端您可以执行以下操作 Developer MonoTouch usr bin mtouch version mtouch 5 3 5 1340204820 or
  • 在 componentDidMount 内部的回调中设置状态

    我目前正在使用React 16 3 React Native 编写here https reactjs org blog 2018 03 29 react v 16 3 html 这表明我SHOULD在 componentDidMount
  • PHP游戏服务器,多个TCP客户端?

    我正在制作一个基于网络浏览器的多人游戏 鉴于其实时性 我确定 Websocket 是处理通信的最佳方式 客户端使用 HTML5 画布来渲染游戏 并使用 Websocket 与主机进行通信 我选择使用 PHP 来托管游戏 因为托管提供商似乎更
  • Xcode:UIPickerView 更改单个行背景颜色

    我有一个包含 3 个组件 或列 的 UIPickerView 每列都有不同数量的行或项目 我需要能够设置每一行的背景颜色 我做了一些挖掘 发现了一些几乎可以工作的东西 但不完全是我需要的 UIView pickerView UIPicker
  • 如何释放Qthread对象的内存?

    我做过这样的事情 in the mainwindow s constructor QThread thr new QThread soundWorker work new soundWorker connect this SIGNAL pl