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

在这个例子类的一个对象

class example
{
public:
    int x;
}

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

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

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

int会占用四个字节,但'next'和'prev'指针呢? 这个类的对象的总大小呢?


对象的总大小是sizeof(int) + 2*sizeof(node*) +编译器可能在成员之间添加的任何填充。 使用sizeof(node)是唯一便携和可靠的方法来找到。


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

链接地址: http://www.djcxy.com/p/80227.html

上一篇: How much memory is allocated to an object of this class?

下一篇: Is memory allocation a system call?