[C++] 一个空类/结构体的大小是多少?
如下一个类(或结构体),求 sizeof(Test)
的值是多少。
1 2 3 |
|
如果测试一下的话,会发现,它的大小是 1
字节,而不是 0
字节。
为什么呢?C++ 的发明者 Bjarne Stroustrup 是这样说的:
- To ensure that the addresses of two different objects will be different.
- For the same reason, "new" always returns pointers to distinct objects.
- 保证两个不同的对象实例的地址不同;
- new 运算符总是返回两个不同的对象。
如果为 0 字节的话,还会有一些其它问题,像是:
Test* p; p++;
将不能正常工作;Test a[2]; sizeof(a)/sizeof(*a);
将会导致除零异常。
多数人应该知道上面这个答案,但是如下两个类型的又分别占用多少字节呢?
1 2 3 4 5 6 7 |
|
答案是:这 3 个类的大小都是 1 个字节。是不是觉得有点意外?
参考: