当函数调用退出并且函数在堆中生成 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 个实例 colA
和 colB
分配之后,调用Collage
的构造函数,在堆.
上分配png
当函数 onStack()
终止时,它调用 Collage
的析构函数,因为 colA
和 colB
已经超出范围。该析构函数依次从堆中释放 png
。
最后,onStack
的堆栈帧(包括 colA
和 colB
的内存)被释放。
因此您的示例中分配的所有内容都将被正确释放。
在主程序上:
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 个实例colA
和 colB
分配之后,调用Collage
的构造函数,在堆.
png
当函数 onStack()
终止时,它调用 Collage
的析构函数,因为 colA
和 colB
已经超出范围。该析构函数依次从堆中释放 png
。
最后,onStack
的堆栈帧(包括 colA
和 colB
的内存)被释放。
因此您的示例中分配的所有内容都将被正确释放。