在此示例类的对象
中class example
{
public:
int x;
}
一个对象将被分配4个字节的内存。因为int需要4个字节。
将为以下类的对象分配多少内存 -
class node
{
public:
int data;
node *prev, *next;
};
int将占用四个字节,但是'next'和'prev'指针呢?那个对象的总大小怎么样?
答案 0 :(得分:1)
对象的总大小为sizeof(int) + 2*sizeof(node*) +
编译器可能在成员之间添加的任何填充。使用sizeof(node)
是找到它的唯一便携且可靠的方法。
答案 1 :(得分:-2)
指针在x86系统上大小为4字节,在x64系统上大小为8字节。
因此node
的总大小为4 + 4 + 4或4 + 8 + 8,x86架构为12字节,x64架构为20字节。
然而,由于填充,在x64架构上,类的实际大小将是24字节,因为x64架构需要8字节对齐。
如Oliver Charlesworth所述,你也可以std::cout << sizeof(node) << "\n";
,它会告诉你类节点的确切大小