因为 obj,playingCard 对象是在嵌套的 for 循环中创建的,这是否意味着在第二个 for 循环完成后,obj 每次都从堆栈中释放?
还有一个小问题, 编译器是否使用堆栈(类似于递归)来跟踪循环和嵌套循环?
<p></p>
for(int c = 0;c<nElems;c++) {
for(int z = c + 1;z<nElems;z++) {
playingCard obj;
}
}
最佳答案
每次迭代都会构造和解构它。
然而,在堆栈上,分配的概念(至少对于 VS 和 GCC)更加模糊。由于堆栈是一个连续的内存块,由编译器预先管理,因此没有像堆分配(新建/删除或 malloc/free)那样分配和释放的真正概念。编译器在堆栈上使用它需要的内存,稍后简单地回滚指针。
关于c++ - 嵌套循环问题中的变量分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1129191/