1:空struct为何有大小
struct A
{
int a;
int b;
int c;
};
struct B
{
};
int _tmain(int argc, _TCHAR* argv[])
{
cout<<sizeof(A)<<endl;
cout<<sizeof(B)<<endl;
getchar();
return 0;
}
1:C++是静态编译型语言,本质上源代码中声明的一切变量对于编译器来说都只是一块内存,即使是空struct也一样需要分配,不过只分配1 byte,sizeof应该是4,因为有内存对齐。Stan Lippman的那本Inside C++ Model说得很清楚。
2:即使是空的struct一样有大小的,不过是一个字节, 因为一个空结构,虽然没有内部成员,但是必须在内存上有所体现,不然在取地址的时候就出问题了,class也是一样的;
引自:http://www.cppblog.com/sunraiing9/archive/2007/02/28/19052.html