多少内存分配给这个类的对象?
在这个例子类的一个对象
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";
,它会告诉你类节点的确切大小
上一篇: How much memory is allocated to an object of this class?