Block 在不同情況下的變數儲存區域

2022-08-30 02:30:14 字數 642 閱讀 2894

一.如果只使用全域性或靜態變數或不使用外部變數, 那麼block塊的**會儲存在全域性區;

二.如果使用了外部變數, 在arc中, block塊的**會儲存在堆區;

在mrc中, block快的**會儲存在棧區;

三.block預設情況下不能修改外部變數, 只能讀取外部變數:

在arc中, 外部變數存在堆中, 這個變數在block塊內與在block塊外位址相同;

外部變數存在棧中, 這個變數會被copy到為block**塊所分配的堆中;

在mrc中, 外部變數存在堆中, 這個變數在block塊內與block塊外相同;

外部變數存在棧中, 這個變數會被copy到為block**塊所分配的棧中;

四.如果需要修改外部變數, 需要在外部變數前面宣告 __block

在arc中, 外部變數存在堆中, 這個變數在block塊內與block塊外位址相同;

外部變數存在棧中, 這個變數會被轉移到堆區, 不是複製, 是轉移.

在mrc中, 外部變數存在堆中, 這個變數在block塊內與block塊外位址相同;

外部變數存在棧中, 這個變數在block塊內與block塊外位址相同;

C 類模板在不同情況下的使用

4.類模板派生普通類 5.類模板派生類模板 6.類模板類內實現 7.類模板類外實現 8.模板類碰到友元函式 類模板和函式模板的定義和使用類似。有時,有兩個或多個類,其功能是相同的,僅僅是資料型別不同。類模板可以有預設引數,比如 template typename nametype,typename ...

不同情況下this的指向以及改變this指向的方法

1.call 有多個引數,第乙個引數是改變的this指向,剩餘的引數是實參 fn.call fn2,12,5,8 在fn中 this代表的是fn2 12,5,8 代表是fn的實參 有兩個引數,第乙個引數是改變的this的指向,第二個引數,形式是陣列的形式,放的是函式的實參 在fn中,this指的是f...

不同情況下構造skb資料報的實現

在我這個網路介面的程式中 can0 其實難點就是怎樣組包。怎樣在原來資料報的基礎加上自己的資料,怎樣構造ip頭,怎樣構造udp頭。除錯了兩個星期,終於是調通了,在這個過程中,通過看核心源 和自己組包的嘗試,大概對組包的方法有了些了解,記錄在此,留做備忘,也希望能給需要這方面資訊的朋友一點幫助吧。1,...