小编tus*_*ars的帖子

为什么__last__元素需要c struct padding

我知道填充,它的规则,它为什么需要等.

我的问题是结构,

struct my_struct {
   int a;
   char c;
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,c的起始地址是字对齐,但仍然编译器添加3个字节(假设4作为字大小)填充.在c之后没有元素,为什么我们需要这3个字节?我查了下面的,

int g_int1;
struct my_struct st;
int g_int2;
Run Code Online (Sandbox Code Playgroud)

通过以上我的意思是我的其余变量声明不依赖于先前变量大小的单词align-ness.编译器总是尝试对齐下一个变量,而不管其全局或局部自动变量.

我看不出有任何关于endian-ness的原因,因为这是char并且对于一个字节它并不重要.我认为是什么原因而不是检查最后一个元素条件编译器总是在需要时添加填充.

什么能有正当理由?

c struct alignment padding

3
推荐指数
2
解决办法
1121
查看次数

标签 统计

alignment ×1

c ×1

padding ×1

struct ×1