如何在C ++中为结构类型分配内存

时间:2017-12-23 07:56:35

标签: c++ struct

我有一个类似

的结构
struct Student
{
    bool isActive;
};

现在,如果我看到此结构大小的输出如下:

Student student;
cout << sizeof(student);

然后它显示1,这很好,因为bool的大小是1个字节。对于

struct Student
{
    string name;
};

输出为4,由于字符串大小为4个字节,因此再次正常。 但对于以下内容:

struct Student
{
    string name;
    bool isActive;
};

我对sizeof(student)的期望是4 + 1 = 5,但输出显示8.为什么会这样?

1 个答案:

答案 0 :(得分:3)

数据类型具有自然对齐,如果您指定对齐为4,则总大小为8.某些处理器需要自然对齐,并使所有体系结构上的访问速度更快。对齐通常等于结构或联合的最大成员,尽管有时会有理由覆盖它并使其更大(例如,与英特尔SSE指令一起使用的数据类型)。