空结构体(类对于C++)的大小

2014-11-24 12:59:11 · 作者: · 浏览: 1

类似代码:
typedef struct sD
{

}S_D;

int size_d = sizeof(S_D);

那么size_d=

如果这是一段C++代码,那么这里结果是1;看上去编译器为这样没有成员的结构体隐形定义了一个一字节(char)的成员,目的是为了能用来标识类实例之间的不同。
这里可以这样理解,如果没有这一个字节,那么所有结构体的实例都是空,也就不占内存,那么他们的实例是没有区别的,因此C++的编译器不允许这么做,从而隐式增加了一个字节。

另外对于class也是同样的(因此C++中struct和class关键字基本没有区别)。