c++ - 该结构的大小

标签 c++ sizeof

Possible Duplicate:
Why isn't sizeof for a struct equal to the sum of sizeof of each member?

我随机创建了一个 Struct,它的大小让我感到惊讶,因为结果不等于我的计算:

int main( int argc, char ** argv ) {
    struct S
    {
        int i;
        int b;
        int c;
        long int e;
    };
    cout << sizeof (struct S) << endl; //sizeof is still an operator
    return 0;
}

通常情况下,3*int + 1*long int = 3*4 + 8 = 20。

但是,结果是 24。

这4个字节是从哪里来的?

最佳答案

您的struct填充了四个字节,大概是为了将long int放置在8字节边界上以加快对其的访问速度。这与平台相关:并非所有编译器都会添加这些字节。

关于c++ - 该结构的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625244/

相关文章:

C++0x : How can I access variadic tuple members by index at runtime?

c++ - 当性能至关重要时,如何编写Linux C++调试信息?

dll - DLL和EXE之间包含vector <T>不同大小的结构大小

c++ - C++中所有非成员函数指针的大小是否相同

c++ - C++ 中的 Sizeof 以及如何计算指针长度?

c# - 尝试将托管代码中的字符串返回到 C++

C++ - 单链表 - 思想

c++ - 对于跨平台游戏,我是否必须使用 OpenGL 数据类型(GLint、CLchar、...)?

c - 动态内存分配给字符串,给出了不正确的大小

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?