对齐这种事情不用特别纠结一个通用规则,实际上是很复杂的。
基本原则有几条:
struct Test { int a; char b; short c; }; //sizeof(struct Test) = 8
但不管怎么样,总是有例外的:
struct Test { short a; char b[3]; int c; };
这个结构体的大小是12,看样子是4*3的对齐方式?
不对,用offsetof看一下就知道,3个成员分别占2、6、4字节。
总之,对齐这种事情,知道有这么回事就行了,没必要细究一个放之四海而皆准的规则出来。具体实现是和编译器、平台、位宽等都有关系的。你真想严格按照你的想法去布置内存的话,直接用1对齐,然后自己用unused填空吧。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有