繁体   English   中英

对C ++指针的怀疑

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM