• 7882阅读
  • 8回复

QT对象释放问题!!! [复制链接]

上一主题 下一主题
离线wljfox
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-04
— 本帖被 XChinux 执行加亮操作(2008-11-04) —
QT里只要有Parent的对象都会自动回收!
下面这种情况的b要不要手动释放呢?:
h:
class a: public QObject
{
private:
    QSqlQuery *b;
}



cpp:
a::a(QWidget * parent):QObject(parent)
{
    b = new QSqlQuery();
}

可以看到new QSqlQuery()中并没有传入parent做为它的父,是不是意味着b没有父对象,需手动释放?
离线wljfox
只看该作者 1楼 发表于: 2008-11-04
不能光看不顶啊!HELP!!!
离线snow_man_0

只看该作者 2楼 发表于: 2008-11-04
在析构函数里手动释放
离线wljfox
只看该作者 3楼 发表于: 2008-11-04
可是我看到很多源码,包括QT DEMO都没有做这种释放!!!!?????
离线wljfox
只看该作者 4楼 发表于: 2008-11-04
XChinux表光加蓝啊,帮忙解答一下吧!
离线sbtree
只看该作者 5楼 发表于: 2008-11-04
个人觉得有必要手动释放,以免内存泄漏
windows 7 + VC++2008 + Qt4.5.2
离线vrcats
只看该作者 6楼 发表于: 2008-11-04
谁有空拿valgrind调一下就知道结果了。
离线htyoung

只看该作者 7楼 发表于: 2008-11-04
引用楼主wljfox于2008-11-04 09:09发表的 QT对象释放问题!!! :
QT里只要有Parent的对象都会自动回收!
下面这种情况的b要不要手动释放呢?:
h:
class a: public QObject
{
.......


从健壮性来说,没有用parent的最好手动delete一下。如果只是用一下(内存用的不多),那么就算你不delete,在你程序退出时Linux或windows会帮我们做清除工作的。
***
QT5
***
离线wljfox
只看该作者 8楼 发表于: 2008-11-05
SqlQuery不是从QObject继承下来的,看来还是得手工DELETE了!
快速回复
限100 字节
 
上一个 下一个