当函数调用退出并且函数在堆中生成 class 个实例时,是否调用了析构函数?

Is destructor invoked when the function call quits and the function generated class instances in heap?

在主程序上:

void onStack()
{
    Collage colA(24);
    Collage colB(12);
}

和拼贴constructor/destructor:

Collage::Collage(size_tnumPics)
{
    pics = new PNG[numPics];
}

Collage::~Collage()
{
    delete[] pics;
}

假设 PNG class 已正确定义。

调用onStack()函数时,是否会在onStack()退出时调用Collageclass的析构函数?

您的问题标题和给出的示例不完全匹配。

您的函数在 堆栈.

上分配 class 个实例 colAcolB

分配之后,调用Collage的构造函数,在.

上分配png

当函数 onStack() 终止时,它调用 Collage 的析构函数,因为 colAcolB 已经超出范围。该析构函数依次从堆中释放 png

最后,onStack 的堆栈帧(包括 colAcolB 的内存)被释放。

因此您的示例中分配的所有内容都将被正确释放。