为什么必须复制块而不保留?引擎盖下的两个有什么区别? 在什么条件下你不需要复制一个块,如果有的话?
答案 0 :(得分:6)
通常当你分配一个类的实例时,它会进入堆中并一直存在,直到它被解除分配。但是如果你用代码声明一个内联块,它就会进入堆栈。当堆栈帧消失时,块实例也会消失 - 除非你复制它,这会创建一个堆驻留实例。基本上,如果要在弹出堆栈帧后继续使用块,则需要在某处复制。
答案 1 :(得分:0)
在堆栈上创建块,并在执行到达当前范围的末尾时销毁块。为了防止这种情况发生,您必须复制它们,这会导致它们被复制到堆中。通常,您会在稍后创建它的范围之外复制要调用它的块。