关于struct的有关问题
关于struct的问题
union u{
int a[4];
char b;
double c;
};
struct s{
int a;
u b;
};
void main(int argc, char *argv[])
{
cout < < sizeof(s) < < endl;
}
我在vc,gcc+cygwin+eclipse都是输出24?
还有为什么一个空的struct{}大小是1?
vc调试出来这个地址是CD,不知是什么?难道是c++的rtti的特性?标识type_info?
------解决方案--------------------
google 对齐
空的struct{}大小是(至少)1,C++规定,为了保证每个对象都有独一无二的地址。
------解决方案--------------------
从你的回复看,你是听说对齐而不是知道。
union是16,它的对齐大小是多少?VC的默认对齐大小又是多少?
union u{
int a[4];
char b;
double c;
};
struct s{
int a;
u b;
};
void main(int argc, char *argv[])
{
cout < < sizeof(s) < < endl;
}
我在vc,gcc+cygwin+eclipse都是输出24?
还有为什么一个空的struct{}大小是1?
vc调试出来这个地址是CD,不知是什么?难道是c++的rtti的特性?标识type_info?
------解决方案--------------------
google 对齐
空的struct{}大小是(至少)1,C++规定,为了保证每个对象都有独一无二的地址。
------解决方案--------------------
从你的回复看,你是听说对齐而不是知道。
union是16,它的对齐大小是多少?VC的默认对齐大小又是多少?