Tag: 堆内存

为什么在块被复制之前,__blockvariables被移动到堆上?

我知道,一个__blockvariables将被移动到堆栈中,如果一个块访问它被复制。 但是下面的testing代码告诉我,在块的复制之前 , __blockvariables被移到了堆上。 也就是说,这四个输出是:stack => heap => heap => heap,这不是我预期的结果:stack => stack => stack => heap。 有人能把我整理出来吗? __block int x = 0; int *pointerToX = &x; //1. It's on the stack NSLog(@"x's location is on the stack: %p", &x); int (^block)() = ^{ x += 1; return x; }; //2. I think its stack, […]