【发布时间】:2013-09-30 06:22:04
【问题描述】:
对于 C/C++ 结构,通常,最终结构的大小是其所有元素大小的简单总和,但在某些情况下这不是真的。
我正在研究为什么以下结构的大小不等于其所有成员的大小的技术答案(它必须是一个):
#include <iostream>
struct {
int a;
long b;
char c;
} typedef MyStruct;
int main() {
MyStruct sss;
std::cout << "Size of int: " << sizeof(int) << std::endl << "Size of long: " << sizeof(long) << std::endl << "Size of char: " << sizeof(char) << std::endl;
std::cout << "Size of MyStruct: " << sizeof(sss) << std::endl;
return 0;
}
输出如下:
Size of int: 4
Size of long: 8
Size of char: 1
Size of MyStruct: 24
所以可以看出MyStruct的大小不是4+8+1 (13),而是24,但是为什么呢?
【问题讨论】:
-
对齐。有更多关于此的问题有很好的答案。
-
查一下struct padding的概念。
标签: c++ c padding memory-alignment