在主程序上:
void onStack()
{
Collage colA(24);
Collage colB(12);
}和拼贴构造函数/析构函数:
Collage::Collage(size_tnumPics)
{
pics = new PNG[numPics];
}
Collage::~Collage()
{
delete[] pics;
}假设PNG类是适当定义的。
当调用onStack()函数时,onStack()退出时会调用拼贴类的析构函数吗?
发布于 2015-01-23 04:29:40
你的题目和给出的例子不完全相符。
您的函数在colA堆栈上分配类实例和colB。
在分配之后,调用Collage的构造函数,该构造函数在堆上分配png。
当函数onStack()终止时,它调用Collage的析构函数,因为colA和colB已经超出了作用域,而这个析构函数又将png从堆中释放出来。
最后,释放了onStack的栈帧,其中包括colA和colB的内存。
因此,您的示例中分配的所有内容都将被正确释放。
https://stackoverflow.com/questions/28102958
复制相似问题