class A:public QDialog
{
public:
A(QWidget* parent=0);
};
A::A(QWidget parent):QDialog(parent)
{
Q_OBJECT
QLabel* label=new QLabel(tr("hello world!"));
}
这是书上最基本的例子.这样不会内存泄露吗?
构造函数中声明的QLabel的指针.这样出了作用域后,label所指向的物件所占的内存不就泄露了吗?
就算写析构函数,这个label指针是构造函数内的局部变量,也传不过去,做不了delete.
我试着用auto_ptr包装label防止内存泄露,结果发现,运行时没有label显示了.
std::auto_ptr<QLabel> label(new QLabel(tr("hello world!"));
这到底是怎么一回事?
是不是与Qt的对象树模型有关?到底是怎么样一种机制,谁能说说吗?