关于QT控件的new 与 delete
来源:互联网 发布:linux 关闭wlan0 指令 编辑:程序博客网 时间:2024/06/14 15:32
http://www.cppblog.com/Wealth/archive/2008/06/04/52128.aspx
关于QT控件的new 与 delete
Qt中,如果申明了两个数组:
QLabel *label[8];
QLabel *sLabel[8];
// 构造控件数组
for(int i=0;i<8;i++)
{
//申请空间.
label[i] = new QLabel("This is a Label",this,0);
//第二个Label指针数组的父对象为上面申请过空间的Label.
sLabel[i] = new QLabel("",label[i],0);
}
QLabel的构造函数的原形为:
QLabel ( const QString & text, QWidget * parent, const char * name = 0, WFlags f = 0 )
text: Label上要显示的字符串;
parent: Label的父对象的指针;
name: Label的名字;
f: Label的Flags;
从上面的代码容易得知label数组每个元素是以当前MyLabel类对象为父对象的;而sLabel里的元素是以对应的label为父对象的;
// 释放控件数据
for(int i=0;i<8;i++)
{
delete label[i];
//delete sLabel[i]; // 这一句不需要调用
// 因为如果在创建组件对象时设置了父对象时,由父对象负责释放其子对象的空间.
}
这里要是不注释掉上面第3行的语句就会出现段错误,原因经过查找资料得知在Qt中如果在创建组件对象时设置了父对象时,
由父对象负责释放其子对象的空间.所以上面第2行已经释放了label的空间,而其子对象的sLabel也随之被释放,
所以如果第三行再进行释放就会出现之前所说的错误.
Qt虽然提供了这种机制,自动回收部分的内存,但是自己写程序的时候还是要小心,不要造成内存泄漏.
- 关于QT控件的new 与 delete
- qt中new与delete的使用
- 关于new与delete
- Qt中的new与delete
- Qt中new与delete
- 关于new与delete 以及 new[]与delete[]
- 关于new,delete与malloc,free的讨论
- 关于malloc/free与new/delete的区别
- C++关于char*型数组的new与delete
- 关于new/operator new和delete/operator delete的看法
- Qt中new出来的控件需要手动delete掉还是系统自动会析构掉?
- new与delete的作用
- new与delete的使用
- new与delete的重载
- Qt里面的new和delete
- new&delete 与 new[]&delete[]
- c++ new与delete与qt内存回收机制
- 关于new 、delete、及应用的使用
- 杂论C语言指针笔记(二)
- 自定义过滤条件
- sql2005 无法解决 equal to 操作"Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AS" 之间的排序
- SQL Server 管理对象
- Mysql的GROUP_CONCAT()函数使用方法----多行合并函数
- 关于QT控件的new 与 delete
- Delphi的Lisence被破坏,无法启动!Borland license information was found,but it is not valid for delph
- AOP的应用领域[转载]
- Struts 2 Hibernate校验教程
- SQL常用函数之三 REPLICATE () ?
- SQLDMO操控SQL Server
- tnsnames.ora配置小结
- Ubuntu 安装windows中文字体
- 数据挖掘常见软件