小编Huy*_*ran的帖子

为什么结构体的对齐不等于它的大小?

我读过一些有关内存对齐的问题,但没有找到与我的问题相关的任何答案。

这里我有2个问题:

struct MyData
{
    short Data1;
    short Data2;
    short Data3;
};
Run Code Online (Sandbox Code Playgroud)
  1. 为什么对齐方式是MyData等于2而不是6 == sizeof(MyData)?是否有任何特定原因导致struct使用与其他基元类型不同的方法来计算对齐方式?

  2. 根据微软的Alignment文档:

    如果地址的对齐方式为 Xn+0,则称该地址与 X 对齐

    这是否意味着只有当对象的MyData地址是其对齐方式的倍数时才对齐(2在本例中就是这样)?如果是这样,那么我们可以在内存中分配的对齐对象越大struct,对齐的对象就越少吗?MyData我的假设正确吗?

c c++ memory struct memory-alignment

1
推荐指数
1
解决办法
336
查看次数

标签 统计

c ×1

c++ ×1

memory ×1

memory-alignment ×1

struct ×1