c++ - sizeof(struct) 返回意外值

标签 c++ gcc struct mingw sizeof

这应该很简单,但我不知道在哪里寻找问题:

我有一个结构:

struct region
{
public:
    long long int x;
    long long int y;
    long long int width;
    long long int height;
    unsigned char scale;
};

当我执行 sizeof(region) 时,它给了我 40 而我期望 33

有什么想法吗?

(mingw gcc,win x64 操作系统)

最佳答案

它正在填充结构以适应 8 字节边界。所以它实际上占用了 40 个字节的内存 - sizeof 返回了正确的值。

如果您希望它只占用 33 个字节,请指定 packed 属性:

struct region
{
public:
    long long int x;
    long long int y;
    long long int width;
    long long int height;
    unsigned char scale;
} __attribute__ ((packed));

关于c++ - sizeof(struct) 返回意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596428/

相关文章:

c - C 中的递归 - 冒泡排序?

c - 如何正确分配新的字符串值?

c++ - C++ [Codeblocks/Visual Studio] 中没有这样的目录或文件

c++ - 如何使用虚拟方法为具有非平凡成员的匿名 union 编写 operator=

c - 我如何告诉 gcc 不要内联函数?

c++ - 用于 32 位字循环的 ARM 内联汇编

c++ - 是否有 g++ 或 clang++ 调试选项来指导可变参数模板

c++ - 我如何在 winXP 中创建一个隐藏进程窗口(从任务栏)的进程?使用 CreateProcess 函数?

c++ - 从预处理器获取Windows版本(C++ Win32)

pointers - 将结构作为参数传递给函数进行修改的内存/处理器效率最高的方法是什么?