2012年3月24日 星期六

2012年3月19日 星期一

GNU_PACKED


GNU_PACKED
用多少byte來排structure,一般沒有指定會用4byte

ex. 假設有一個 data struct

struct Qoo_s{
int a;
char b;
int c;
}GNU_PACKED Qoo_t;


這樣你覺得會有幾個 byte 來存這個 struct?
答案是 12,因為有 default 會對齊,預設是4個byte做對齊,如果要改就用PACKED改

以原本這例子而言,PACKED 1 就是用 1 byte 來對其,所以這時候只會占 9 byte。好處是空間減少;但是壞處是有可能讓執行的時間變長,fetch phase 會變長。PACKED只會影響在記憶體內的排版

Reference:
[1] http://changeway.pixnet.net/blog/post/7669656-data-structure-alignment