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


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倍)。
    };


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM