关于C++中的sizeof(struct)是面试和笔试中经常出现的问题,下面将一些常见问题总结如下:
1 定义一个结构体,里面是空的,sizeof(struct)为多少?
sizeof(struct)=1,因为当我们在申请该类型的实例时,它必须在内存中占用一定的空间,VS中每个空类型的实例占用1字节的内存空间。
2 在空struct中加入构造函数和析构函数,sizeof(struct)为多少?
还是1,因为调用函数时只需要知道函数的地址,函数地址和类型相关而和实例无关。
3 如果把析构函数定义为虚函数呢?
C++编译器发现类型中有虚函数时回味该类型生成虚函数表,并在该类型的每个实例中添加一个指向虚函数表的指针,在32位机器上,一个指针占4个字节的空间,因此求sizeof结果为4;64位机器上,求sizeof为8。
4 一般情况下,sizeof(struct)的计算规则?
请看下面的结构:
struct MyStruct
{