为什么在此函数的程序集中char大小为8个字节?

时间:2017-05-03 19:19:37

标签: c stack stackframe

我正在使用ARM(32位)。假设以下函数使用堆栈帧在本地存储变量。

void func() {
   char ch;     //0x8? Shouldn't this be 0x4 with padding?
   int a, b, c; //each are 0x4
   double m, n; //each are 0x8
}

所有这些局部变量的大小为0x24。当我减去三个int s(0xC)和两个double s(0x10)时,我留下了0x8,这意味着char占用了8个字节。我知道padding有助于对齐,但如果char的大小为1并且它应该对齐,那么它不会填充到0x4吗?

0 个答案:

没有答案