[英]Doubts about C++ pointers
foo
函数完成后, myClass
指针会发生什么? 它会自动删除吗?
当bar
函数完成时, myThread
指针会发生什么? (假设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();
}
提前致谢
您在这里使用C ++,如果不这样做,没人会删除您的对象。 您编写的每个new
都需要编写一个delete
来释放内存(就像在C中,每个malloc
需要一个free
)。
只有对象被删除:
void foo()
{
MyClass myClass;
myClass.doSomething();
}
然后在foo返回时调用MyClass
的析构函数。 通常,除非您需要将对象持久化到您的范围之外,否则应优先使用对象而不是指针,否则将防止代码中的内存泄漏。
需要考虑的特殊情况:
注意:对于QThread,您应该要求完成后将其删除。 请参阅何时或如何在Qt中删除QThread 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.