因为obj,playCard对象是在嵌套的for循环中创建的,这意味着在第二个for循环完成后,每次从堆栈中取消分配obj?
还有一个小问题,编译器是否使用堆栈(类似于递归)来跟踪循环和嵌套循环?
for(int c = 0;c<nElems;c++) {
for(int z = c + 1;z<nElems;z++) {
playingCard obj;
}
}
Run Code Online (Sandbox Code Playgroud)
它在每次迭代时都被构造和解构.
但是,在堆栈上,分配的概念(至少VS和GCC)更加模糊.由于堆栈是由编译器预先管理的连续内存块,因此没有以堆分配(new/delete或malloc/free)的方式分配和解除分配的真正概念.编译器使用堆栈上所需的内存,稍后简单地回滚指针.
| 归档时间: |
|
| 查看次数: |
585 次 |
| 最近记录: |