以下是结合之前计算机组成原理的知识,实践总结的两条规律:
A. 补全/对齐
例1:答案是10吗?
struct Example {
int a;
char b, c;
int d;
};
不是,是12。为什么呢?因为结构体里的所有变量需要根据字节数量最多的那个数量对齐,比如这里最多是4(int),两个char虽然只需要占用2个字节,但对齐后它们就需要占用4个字节了,4*3=12。
那为什么要对齐呢?(据说是因为对齐了的话,read和write很好定位,不用麻烦去计算偏移量)
例2:不难算出下面的结果了吗?
struct Example {
int a;
char b;
int d;
char c;
};
例3:再算下这个~
struct Example {

本文探讨了C++中结构体的内存占用规则,包括补全/对齐原则和嵌套结构体的对齐策略。通过实例分析,解释了为何结构体变量需要按照最大字节数量对齐,并介绍了不同情况下结构体总大小的计算方法。同时指出,这些规律可能因编译器和平台的不同而有所变化。


被折叠的 条评论
为什么被折叠?



