int (^b[3])();
for (int i=0; i<3; i++)
b[i] = ^{ return i;};
for (int i=0; i<3; i++)
printf("b %d\n", b[i]());
在第一個循環中創建塊結構,然後將此結構的地址賦給b [i]元素,然後塊結構被銷燬。問題是爲什麼第二個循環中的b [i]包含有效/相同的指向塊最後狀態的指針?我期望第二個循環崩潰,因爲元素指向無效的堆棧區域。堆棧塊壽命
我知道這不是最好的一段代碼,我沒有使用它。但想要理解爲什麼在第一次循環之後,當塊結構應該被銷燬時,我有有效的堆棧對象。
相關:[無法理解塊的詞法作用域](http://stackoverflow.com/questions/6647918/unable-to-understand-the-blocks-lexical-scope/6648368#6648368) – 2011-09-13 13:05:55