是不是每个new都要一个new char deletee

[结贴]QT的内存管理问题:请问QT控件类在析构时是否需要被delete - QTCN开发网 - Powered by phpwind
查看完整版本: [--
[结贴]QT的内存管理问题:请问QT控件类在析构时是否需要被delete
查看QT提供的例子,它对所有new出来的控件都没有调用delete来进行释放。我的问题是,QT能对这些控件做好内存管理吗?
有些在构造函数中有 parent 传入,而没有的也在其设置或添加、插入之类函数中设置了parent。这是Qt的父子内存管理方式,当父被析构时,其关联的子项会先被调用析构。
你可以参见Qt官方文档 Object Trees & Ownership,你的问题可以引用里边一句话来解释The parent, window, and the child, quit, are both QObjects because QPushButton inherits QWidget, and QWidget inherits QObject.
在网上查了一下&& QT子窗体占用系统资源的释放问题 . 是否正确还请大家一起讨论补充&& &&
:你可以参见Qt官方文档 Object Trees & Ownership,http://qt-project.org/doc/qt-4.8/objecttrees.html你的问题可以引用里边一句话来解释The parent, window, and the child, quit, are both QObjects because QPushButton inherits QWidget, and QWidget inherits QObject .. ( 17:37) 首选表示感谢我看了你给的链接后,感觉子窗口的释放跟它是否有父窗口有关,如果没有父窗口了?
准确的说,当你的control都是从QObject里边继承来的,那么QObject就会用tree的方式来管理。如果你的window有parent window,而这个parent window从QObject继承来,那么也是被QObject被销毁,就会一个个销毁他的children。所以你的问题,如果没有父窗口怎么办? 那就看你的子窗口是不是从QObject继承来的。如果是你自己创建的,你当然对它负责,在合适的时候回收它,比如在destructor里边,比如在closeEvent里边。CSDN里边提到的方法可用,具体针对你需要的情况,比如多线程时候,比如占用Camera资源时候,等等,在特定的时间你需要做回收。
查看完整版本: [--
Powered by
Gzip disabled欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 1424 人关注过本帖
标题:关于c++中new 和 delete的问题
等 级:论坛游民
帖 子:47
专家分:31
结帖率:37.5%
&&已结贴√
&&问题点数:10&&回复次数:14&&&
关于c++中new 和 delete的问题
&&&我们都知道用new可以在堆中为程序开辟空间,但是如果程序在结束之前未对new开辟的空间用delete删除,是否可以啊??程序结束运行时是不是自动把new开辟的空间释放了??
&&&那位高手帮忙解答一下!!
搜索更多相关主题的帖子:
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
delete应该理解为释放,
不释放可以 但是很危险!
来 自:未来
等 级:蜘蛛侠
帖 子:353
专家分:1166
&&& 在程序中用到NEW分配内存空间时,运行结束得 时候一定要用delete来释放分配的内存空间,如果你不释放得话系统的内存将会减少,一两个程序这么做可能没有什么,但是如果所以得程序都这么干得话,那就有得玩咯。内存时及其宝贵得资源啊。我们不能有借不还啊。。。(我想在你下次开机的时候那内存应该回来了吧,我个人想的哦,错了大家指正一下呵呵)
翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
等 级:蜘蛛侠
帖 子:250
专家分:1150
以下是引用ltyjyufo在 15:39:00的发言:
&&& 在程序中用到NEW分配内存空间时,运行结束得 时候一定要用delete来释放分配的内存空间,如果你不释放得话系统的内存将会减少,一两个程序这么做可能没有什么,但是如果所以得程序都这么干得话,那就有得玩咯。内 ...程序结束后自动释放
等 级:论坛游侠
帖 子:80
专家分:136
4楼说的对啊
等 级:论坛游民
帖 子:40
专家分:60
应该是程序结束的时候会自动释放,但是如果你的程序比较大的话,那就有的玩了。
来 自:三体星系
等 级:贵宾
威 望:22
帖 子:500
专家分:1607
new出来的空间一直会保留到delete或者程序结束。
如果new出来的空间比较大,用完后不delete,那么n个new之后,你会发现内存空间不够用了,严重的会导致系统奔溃。
来 自:未来
等 级:蜘蛛侠
帖 子:353
专家分:1166
&&&&&& 如果程序结束后会自动释放的话,那要delete来做什么????????我觉得系统在没有关机之前是收不回分配出去的内存的(不用delete释放的话),只有在下次开机(或重起)的时候系统才能够收回。
翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
用delete这是一个习惯&&程序结束后 内存就将释放 啥都没了 !
等 级:小飞侠
帖 子:600
专家分:2452
回复 8楼 ltyjyufo
这个跟操作系统有关系,在XP里,你没用delete去释放,程度结束了,系统也会把那些内存回收回去。自己写段代码再调出资源管理器察看验证下。
迭代的是人,递归的是神。
版权所有,并保留所有权利。
Powered by , Processed in 0.023247 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 new char delete 的文章

 

随机推荐