类中的内存对齐问题 结果为16 求解答
- C/C++ code
class personame{ private: char a[10]; int b; // char a[10]; public: personame(int c) { b = c; }};personame p(1);cout << sizeof(p) << endl;按照内存对齐的原则 第一行是10 第二行是4
应该是 10*2 或者 12*2 吧 用Gcc的结果是16 求解答
谢谢~~~
[解决办法]
可能是这样了:
char a[10]; //对齐之后为12字节
int b; //4字节
一共16字节
[解决办法]
char a[10]是10个字节,
int b 为4字节。
加在一起,14字节。 但编译器是不允许的。 会再添加两个字节。
16字节,凑整。 你就是a[12]也是 16字节, 如果你是a[13]的话, 就又是20字节了。,好像是这样的道理。!
[解决办法]
[解决办法]
(10+2)+4
[解决办法]