为这个类的对象分配了多少内存?

时间:2014-10-04 15:26:09

标签: c++ memory-management

在此示例类的对象

class example
{
public:
    int x;
}

一个对象将被分配4个字节的内存。因为int需要4个字节。

将为以下类的对象分配多少内存 -

class node
{
public:
    int data;
    node *prev, *next;
};

int将占用四个字节,但是'next'和'prev'指针呢?那个对象的总大小怎么样?

2 个答案:

答案 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";,它会告诉你类节点的确切大小