引用
属性描述
aligned (alignment)
将结构体的大小与alignment对齐,比如结构体
struct __attribute__((aligned(8))) test
{
int i;
char c;
int j;
};
如果结构体中的变量 i, c , j 都赋值为1。在内存中查看到的layout分别如下:
-
对齐前为12字节
1 0 0 0 1 0 0 0 1 0 0 0 -
对齐后为16字节
1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0
如果想对齐结构体内某个域,例如在使用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)就是自动对齐的。
网友评论