gpt4 book ai didi

c++ - CPP 核心指南布局中浪费的空间

转载 作者:行者123 更新时间:2023-12-03 12:47:31 24 4
gpt4 key购买 nike

我正在阅读CPP 核心指南P.9: Don’t waste time or space :

示例,不好:

struct X {
char ch;
int i;
string s;
char ch2;

X& operator=(const X& a);
X(const X&);
};

然后它指出:

... Note that the layout of X guarantees that at least 6 bytes (and most likely more) are wasted.

为什么6个字节肯定会被浪费?以及如何修复(除了构造函数声明,它是示例的浪费源)

最佳答案

该结构以默认对齐方式开始。第一个成员 ch 已对齐。 i 是一个 int 并且必须是四字节对齐的(当 int 是四个字节长时),所以在 ch 之间> 和 i 你会得到三个字节的填充。在 ch2 之后的结构末尾也是如此,您将获得三个字节的填充。插入这些元素是为了使 X x[2]; 两个元素在内存中正确对齐。

struct X {
char ch;
char padding1[3]; // so that int i is int-aligned (four bytes)
int i;
string s;
char ch2;
char padding2[3]; // end of struct must also be aligned
};

关于c++ - CPP 核心指南布局中浪费的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54457768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com