引用
屬性描述
aligned (alignment)
將結(jié)構(gòu)體的大小與alignment對齊娱仔,比如結(jié)構(gòu)體
struct __attribute__((aligned(8))) test
{
int i;
char c;
int j;
};
如果結(jié)構(gòu)體中的變量 i, c , j 都賦值為1具篇。在內(nèi)存中查看到的layout分別如下:
對齊前為12字節(jié)
1 0 0 0 1 0 0 0 1 0 0 0對齊后為16字節(jié)
1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0
如果想對齊結(jié)構(gòu)體內(nèi)某個域,例如在使用netlink時川梅,要求消息的首部必須對齊【韭ⅲ可以這樣寫
struct nlmsg {
struct __attribute__((aligned(NLMSG_ALIGNTO))){
struct nlmsghdr nl_hdr;
};
struct cn_msg cn_msg;
enum proc_cn_mcast_op cn_mcast;
};
這樣組裝出來的消息较沪,頭部(nlmsghdr)就是自動對齊的。