結構體內的內存分配(地址偏移)

struct NODE          //這時候內存大小爲16
    {                //按定義的前後順序分配內存
        char k;      //佔1個字節,偏移量爲0(相對於結構體),
        char c;      //佔1個字節,偏移量爲1(相對於結構體),不用填充。
        double a;    //佔8個字節,偏移量爲2(相對於結構體),不是double類型的整數倍,因此要在a前填充6個字節,偏移量變爲8,
    };               //總內存爲16
struct NODE          //這時候內存大小爲24
    {                //
        char k;      //佔1個字節,偏移量爲0(相對於結構體)
        double a;    //佔8個字節,偏移量爲1(相對於結構體),不是double類型的整數倍,因此要在a前填充7個字節,偏移量變爲8。
        char c;      //佔1個字節,偏移量爲16(相對於結構體),是char類型的整數倍,前邊不用填充,可是,結構體的大小要是全部成員大小的整數倍,所以要在結尾填充7個字節,變成24(double的3倍)。
    };
相關文章
相關標籤/搜索