myClass
函数完成后,foo
指针会发生什么?是自动删除吗?
myThread
函数完成后,bar
指针会发生什么? (假设myThread
指向QThread
对象)
void foo()
{
MyClass *myClass = new MyClass();
myClass->doSomething();
}
void bar()
{
// Suppose that MyThread is a QThread class
MyThread* myThread = new MyThread(2.5);
// Connect the Thread to get the result
connect(myThread, SIGNAL(sendResult(double)), this, SLOT(getResult(double)));
// Start the thread
myThread->start();
}
提前致谢
答案 0 :(得分:3)
你在这里使用C ++,如果你不这样做,没有人会删除你的对象。您编写的每个new
都要求您编写一个delete
来释放内存(就像C中每malloc
需要一个free
)。
只有对象被删除:
void foo()
{
MyClass myClass;
myClass.doSomething();
}
然后在foo返回时调用MyClass
的析构函数。一般情况下,除非您需要将对象保持在范围之外,否则优先于指针上的对象,它将防止代码中的内存泄漏。
需要考虑的特殊情况:
注意:对于QThread,您应该在完成后要求删除它。请参阅When or how to delete QThread in Qt。