我有一些代码
#pragma pack(1)
typedef struct Data
{
unsigned int a;
unsigned int b;
unsigned int c;
char d[16];
unsigned int f;
}Data;
void f()
{
Data a;
memset(&a, 0, sizeof(a));
a.f =12;
}
当我使用aarch64_eabi_gcc aarch64-linux-gnu-g ++工具链编译上述代码并objdump目标代码时,我得到以下结果:
……
move x2, #0x24
mov w1, #0x0
bl 0<memset>
这意味着数据的大小是36位长而不是32位长,为什么? 我的cpu是arm cortexa53