1
#include<iostream>
using namespace std;
class Node
{
public:
int data;
Node *next;
};
int main()
{
Node* re=new Node();
Node* t=new Node();
re->data=2;
re->next=t;
cout<<sizeof(Node)<<endl;
cout<<sizeof(re->data)<<endl;
cout<<sizeof(re->next)<<endl;
}
出力リレー:私はどのようにサイズの取得方法来るクラスのサイズは16リンクリストのノードクラスのサイズが16になっていますか?
ように出ている
ポインタは、64ビットマシンでは8バイト、 整数では4バイトです。したがって、クラスのサイズが12(8 + 4)、すなわちクラスのメンバーの合計であるべきではないか? なぜ余分な4つがあるのですか?
パディングと呼ばれています。 64ビットオペレーティングシステムを前提とすると、 'next'メンバは8バイト境界でなければなりません。したがって、' int'と各インスタンスのポインタの間に4バイトのパディングがあります。 –