如何在C ++中为结构类型分配内存[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有一个类似的结构

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.为什么会这样?

c++ struct
1个回答
3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.