gpt4 book ai didi

c - C 结构中的松弛字节

转载 作者:太空狗 更新时间:2023-10-29 15:22:44 27 4
gpt4 key购买 nike

我知道字边界的概念,计算机使用字边界存储结构。我正在使用 64 位 CPU 和 64 位操作系统。 limits.h中的__WORDSIZE宏的值为64,所以我的字边界是8字节对吧?

我有两个结构:

struct a
{
int a;
char b;
float c;
};

sizeof(struct a) 给出 12 作为答案。 sizeof(int) 为 4。sizeof(float) 为 4。

For struct b{
char a;
char b;
char c;
char d;
};

sizeof(struct b) 为 4。

这些输出表明字边界是 4 个字节。我如何找到单词边界。那么它真的等于 sizeof(int) 吗?

奇怪的是:

struct c{
char a;
char b;
char c;
char d;
char e;
}

sizeof(struct c) 是 5 个字节。谁能解释一下。

最佳答案

首先,__WORDSIZE 不在那里供您检查。您永远不应使用以 ___ 和大写字母开头的宏(或其他名称),除非它们已专门记录供您使用。它是 header 使用的实现的内部部分,实现可以在以后的版本中自由删除或重命名它。其他系统甚至可能根本没有相应的宏,或者可能有不同的名称。

话虽如此,结构对齐与 native “单词”大小无关。它与结构中各个元素的对齐方式有关。

看我对这个问题的回答:

How does gcc calculate the required space for a structure?

关于c - C 结构中的松弛字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300638/

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