QTimer问题

lawalive 2016-06-02 04:21:19
QTimer *timer=new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(AutRun()));
timer->start(6000);
delete timer;

哪位大侠帮忙解决,不使用delete,timer会无限挤占内存,但一使用delete,timer被消灭的问题。
新手,多谢!
...全文
534 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lawalive 2016-06-06
  • 打赏
  • 举报
回复
引用 10 楼 u010111033 的回复:
再扯一句,timer只是个指针,你又没有一直追加数据进去,他又怎么会一直增加内存?所以一定是你new出来的其他东西在一次次增加内存。另外你的timer后面有个this,所以他会在对象树里面,当最终你的主线程GG时候,他顺带也GG,不存在timer的内存泄漏
谢谢!很有启发。已解决。
ronal7do 2016-06-03
  • 打赏
  • 举报
回复
我觉得关键就是你的触发信号的间隔和AutRun函数的设计了。 如果你在里面AutRun,new了很多东西又不释放的,那就gg了。。
Little柯南 2016-06-03
  • 打赏
  • 举报
回复
再扯一句,timer只是个指针,你又没有一直追加数据进去,他又怎么会一直增加内存?所以一定是你new出来的其他东西在一次次增加内存。另外你的timer后面有个this,所以他会在对象树里面,当最终你的主线程GG时候,他顺带也GG,不存在timer的内存泄漏
Little柯南 2016-06-03
  • 打赏
  • 举报
回复
如果只是Timer会占用你的内存并增加,那也是长见识了。 只会是你的槽函数或者其他new出来的对象或者变量一直在增加数据,建议你排查,尤其是timeout对应的槽函数里面的变量,执行前先置空等等做处理。不一定执行完就delete。 如果是类变量指针,你每次从头开始写数据
  • 打赏
  • 举报
回复
timer使用成员变量即可,不用指针
dext 2016-06-02
  • 打赏
  • 举报
回复
AutRun() 有内存泄漏?
lawalive 2016-06-02
  • 打赏
  • 举报
回复
引用 4 楼 u010111033 的回复:
setInterval()设置刷新率
这只是解决频率问题,而没有解决old timer无限次地占用内存的问题。
Little柯南 2016-06-02
  • 打赏
  • 举报
回复
setInterval()设置刷新率
lawalive 2016-06-02
  • 打赏
  • 举报
回复
用timer->stop()是停止timer吧?但timer我要它持续发信号呢?
引用 楼主 lawalive 的回复:
QTimer *timer=new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(AutRun())); timer->start(6000); delete timer; 哪位大侠帮忙解决,不使用delete,timer会无限挤占内存,但一使用delete,timer被消灭的问题。 新手,多谢!
lawalive 2016-06-02
  • 打赏
  • 举报
回复
想长时间保留QTimer,但又不想内存被挤占而死机。
王桑的一天 2016-06-02
  • 打赏
  • 举报
回复
你可以timer->stop()

16,216

社区成员

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

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