qt 窗体 内存释放

逆风草0719 2013-01-09 09:41:27
请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢
...全文
1080 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
逆风草0719 2013-01-29
  • 打赏
  • 举报
回复
引用 3 楼 tt2com 的回复:
引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢 如果你的窗口有父窗口,那么在你最高的父窗口注销前,该窗口使用的资源是不会被释放的,但你出现新建窗口内存使用不会增加。 如果你的窗口为独……
大神,麻烦看一下这个问题怎么解决,多谢!!! http://bbs.csdn.net/topics/390357552?page=1
卧听檐雨 2013-01-22
  • 打赏
  • 举报
回复
引用 6 楼 openXMPP 的回复:
内存管理比较复杂 根据是否读取命中再进行换页操作 有许多更新策略 你可以在析构的窗体中 new 一个很大的数组 然后再释放看看有没有 释放 这种情况下 比如for 100000次内存没有明显增长 则可以认为正确释放了
1.做过类似的测试,可以保证自定义的数据结构已经被释放,内存有降低,但是窗体占用的内存依然存在,在管理器中看不到内存的降低 2.肯定不是程序memory leak的问题,大家可以做个试验,只是简单的做个widget,show出来后,再close,应会重现问题; 3.现在的问题是随着新窗口不断的打开,内存就会不断的增加,导致系统卡顿; 求大神~~
tt2com 2013-01-20
  • 打赏
  • 举报
回复
引用 13 楼 wwsjnyf 的回复:
引用 12 楼 tt2com 的回复:引用 8 楼 wwsjnyf 的回复: 引用 7 楼 tt2com 的回复:引用 4 楼 wwsjnyf 的回复: 引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用……
有new 有delete内存就不会泄露。 如果你发现你程序内存泄露了,先找自己的问题。如果这个是Qt的bug早就被反映了。Qt确实存在一些bug,但如果这么低级的bug都存在,Qt现在不可能有这样的应用市场,所有你程序还有泄露就好好查查
jdwx 2013-01-19
  • 打赏
  • 举报
回复
引用 14 楼 wwsjnyf 的回复:
引用 8 楼 wwsjnyf 的回复:引用 7 楼 tt2com 的回复: 引用 4 楼 wwsjnyf 的回复: 引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资……
如果new和delete配对使用,不会泄漏的。 至于Qt内部的内存管理,应该相信Qt不会出这么低级的错误。
逆风草0719 2013-01-19
  • 打赏
  • 举报
回复
引用 8 楼 wwsjnyf 的回复:
引用 7 楼 tt2com 的回复: 引用 4 楼 wwsjnyf 的回复: 引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢 如果你的窗口有父窗……
还想问个问题,在写配置文件XML的操作中怎样避免内存泄露?
逆风草0719 2013-01-19
  • 打赏
  • 举报
回复
引用 12 楼 tt2com 的回复:
引用 8 楼 wwsjnyf 的回复: 引用 7 楼 tt2com 的回复:引用 4 楼 wwsjnyf 的回复: 引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低……
怎么个在理法呢? 我这边内存泄露还是存在 想问一下QTime会造成内存泄露吗? 怎么避免
tt2com 2013-01-10
  • 打赏
  • 举报
回复
引用 8 楼 wwsjnyf 的回复:
引用 7 楼 tt2com 的回复:引用 4 楼 wwsjnyf 的回复: 引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢……
楼上的说的很在理。 你就没个窗口独占整个屏幕好了,没个窗口均未独立。这样你在delete时将及时回收内存
乔巴好萌 2013-01-09
  • 打赏
  • 举报
回复
内存管理比较复杂 根据是否读取命中再进行换页操作 有许多更新策略 你可以在析构的窗体中 new 一个很大的数组 然后再释放看看有没有 释放 这种情况下 比如for 100000次内存没有明显增长 则可以认为正确释放了
逆风草0719 2013-01-09
  • 打赏
  • 举报
回复
引用 1 楼 qq214517703 的回复:
一个窗体所占的内存 貌似不会很大吧,
但是多个窗体就不行了
逆风草0719 2013-01-09
  • 打赏
  • 举报
回复
引用 3 楼 tt2com 的回复:
引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢 如果你的窗口有父窗口,那么在你最高的父窗口注销前,该窗口使用的资源是不会被释放的,但你出现新建窗口内存使用不会增加。 如果你的窗口为独……
嵌入式板子上内存比较紧张,您认为delete之后可以不用管了,但是正因为这种机制可用内存会越来越少,程序系统运行会越来越慢,有没有一种方法可以让他快速的释放内存
tt2com 2013-01-09
  • 打赏
  • 举报
回复
引用 楼主 wwsjnyf 的回复:
请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢
如果你的窗口有父窗口,那么在你最高的父窗口注销前,该窗口使用的资源是不会被释放的,但你出现新建窗口内存使用不会增加。 如果你的窗口为独立窗口,那么在delete是将释放资源,当然这个也不是绝对的,但并不会出现memory leak现象。 这个是Qt内存管理的一种机制,网上的大量说法是为防治memory leak,但在内存比较紧张的嵌入式中,这种机制非常不好。不过你使用Qt那你也没办法了。
jdwx 2013-01-09
  • 打赏
  • 举报
回复
引用 1 楼 qq214517703 的回复:
一个窗体所占的内存 貌似不会很大吧,
一个空窗口确实不占多大的内存,想办法加大这个窗口占的内存,弄个大数组什么的,再看看。
雲天之巔 2013-01-09
  • 打赏
  • 举报
回复
一个窗体所占的内存 貌似不会很大吧,
jdwx 2013-01-09
  • 打赏
  • 举报
回复
ios单任务一次一个程序一个界面,用完了关闭,内存就回来了。
逆风草0719 2013-01-09
  • 打赏
  • 举报
回复
引用 9 楼 jdwx1 的回复:
引用 8 楼 wwsjnyf 的回复: 引用 7 楼 tt2com 的回复:引用 4 楼 wwsjnyf 的回复: 引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低……
这个怎么讲,是个什么样的机制呢?
jdwx 2013-01-09
  • 打赏
  • 举报
回复
引用 8 楼 wwsjnyf 的回复:
引用 7 楼 tt2com 的回复:引用 4 楼 wwsjnyf 的回复: 引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢……
第一个问题,照ios学。
逆风草0719 2013-01-09
  • 打赏
  • 举报
回复
引用 7 楼 tt2com 的回复:
引用 4 楼 wwsjnyf 的回复: 引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢 如果你的窗口有父窗口,那么在你最高的父窗口注销前,该窗口使……
1.确实像你描述的一样,窗口被消除后内存是不会被释放的,这也是我纠结的问题,因窗口比较多而内存有限,这样必然会造成系统运行缓慢,我想知道有什么方法可以在窗口消除后将内存进行释放从而有效的重复利用内存空间。 2.我们需要显示中文,并且字号较大,应该小心什么呢?
tt2com 2013-01-09
  • 打赏
  • 举报
回复
引用 4 楼 wwsjnyf 的回复:
引用 3 楼 tt2com 的回复:引用 楼主 wwsjnyf 的回复: 请问 在一个窗体中 设置了 this->setAttribute(Qt::WA_DeleteOnClose,true); 属性 在调用CLOSE后,也确实进行了析构,但看资源管理器中内存并不马上降低 是怎么个原因呢 如果你的窗口有父窗口,那么在你最高的父窗口注销前,该窗口使用的资源是不会被……
我想问你你想怎么管呢? 一次窗口建立的资源在新建时被加载内存里,如果该窗口被消除,那么被占用的内存是不会被释放的。但是如果你对相同的窗口进行创建内存是不会增加的,按你说的内存不断增加的那叫memory leak,那你还是查查你自己的代码把。 我不知道你有多少个窗口,嵌入式程序的窗口我写过比较多的,但仅窗口及图片而言吃的内存并不是很多。 但如果你需要显示中文,并且是大字体的中文,那你就要小心了。

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧