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

标签 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。为什么会这样?

最佳答案

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

关于c++ - 在 C++ 中如何为结构类型分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47950824/

相关文章:

c++ - 你如何摆脱在 opencv c++ 中裁剪图像后留下的空白间隙?

c++ - 获取当前光标位置

c - 不含数组的结构体的生命周期

c - 获取给定成员定义地址的成员定义名称?

c# - 要构造的字节数组

c++ - 从文件中获取特定的 c++ 函数而不包含文件

c++ - getline从txt文件中读取数据

c++ - 使用 AWE 分配内存

c - 在C中的链表开头插入新节点

c - 退出函数时结构体会获取垃圾值