当前位置:编程学习 > wap >>

Qt中控件指针的delete问题

我在Qt的主窗口中定义了QAction控件的指针,但是在程序中没有任何调用,然后在主窗口的析构函数中delete这个控件,发现每次在调用主窗口的析构函数时都在“退出代码:”后显示一串无规律数字,而正常情况下应该为0。这是为什么? --------------------编程问答-------------------- new了一个 那你delete掉呢 --------------------编程问答-------------------- 这取决于你的QAction是怎么创建的。如果创建的时候指定了parent,在析构的时候再delete 相当于是放了两次。 --------------------编程问答-------------------- 指定parent之后可以不用手动删除 --------------------编程问答--------------------
引用 2 楼 dext 的回复:
这取决于你的QAction是怎么创建的。如果创建的时候指定了parent,在析构的时候再delete 相当于是放了两次。

QAction只是在h文件的类中声明,在类体中没有任何实例化,也没有制定parent。只是在析构函数中delete了,怎么会delete两次? --------------------编程问答-------------------- 不允许 delete 一个未分配空间的指针,否则会发生灾难。 --------------------编程问答--------------------
引用 5 楼 Inhibitory 的回复:
不允许 delete 一个未分配空间的指针,否则会发生灾难。

+1
Qt的内存管理机制很方便,只要new的时候指定parent,析构的时候Qt会自动去delete。 --------------------编程问答--------------------
引用 5 楼 Inhibitory 的回复:
不允许 delete 一个未分配空间的指针,否则会发生灾难。

那是否可以理解,一个指针定义时就给分配地址,哪怕是0地址。只要不让形成野指针。delete时就不会引起问题是吧? --------------------编程问答-------------------- QAction只是在h文件的类中声明,在类体中没有任何实例化,也没有制定parent。只是在析构函数中delete了,怎么会delete两次? 

楼主!你都没有实例化过,为啥要delete呢? --------------------编程问答--------------------
引用 8 楼 foxyz 的回复:
QAction只是在h文件的类中声明,在类体中没有任何实例化,也没有制定parent。只是在析构函数中delete了,怎么会delete两次? 

楼主!你都没有实例化过,为啥要delete呢?

当时忘记实例化了。正好遇到这个问题。我就问问了。
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,