4

为什么必须复制块而不保留?引擎盖下的两者有什么区别?如果有的话,在什么情况下你不需要复制一个块?

4

2 回答 2

6

通常,当您分配一个类的实例时,它会进入堆并一直存在,直到它被释放。但是如果你声明一个与代码内联的块,它就会进入堆栈。当堆栈帧消失时,块实例也会消失——除非你复制它,这会创建一个堆驻留实例。基本上,如果您想在堆栈帧弹出后继续使用该块,您需要在某处制作副本。

于 2013-05-09T16:57:00.210 回答
0

块在堆栈上创建并在执行到达当前范围的末尾时被销毁。为了防止这种情况发生,您必须复制它们,这会导致它们被复制到堆中。通常你会复制一个你想在以后调用它的块,在它创建的范围之外。

于 2013-05-09T16:56:31.490 回答