读书人

类中的内存对齐有关问题 结果为16 求解

发布时间: 2012-10-20 14:12:48 作者: rapoo

类中的内存对齐问题 结果为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字节了。,好像是这样的道理。!
[解决办法]
探讨

可能是这样了:
char a[10]; //对齐之后为12字节
int b; //4字节
一共16字节

[解决办法]
(10+2)+4
[解决办法]
探讨
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;



按……

读书人网 >C++

热点推荐