首页 > 解决方案 > arm aarch64 sizeof打包结构与32位不同

问题描述

我有一些代码

#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

标签: c++

解决方案


推荐阅读