我正在使用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吗?