類字節大小,字節對齊相關

1、空類爲1字節,虛函數指針爲4字節(字節按double對齊時爲8字節),子類在父類的字節大小上面累加

class B
{
	double a; //8字節
	int b;

public:
	virtual ~B(){ cout << "B::~B()" << endl; }
};

class D : public B
{
 	int i;
 	int j;
public:
	virtual ~D() { cout << "D::~D()" << endl; }
};

int main(void)
{
	cout << "sizeB:" << sizeof(B) << " sizeD:" << sizeof(D) << endl;
	B *pb = new D[2];

	delete[] pb;

	return 0;
}
類B按8字節對齊,類D按4字節對齊,所以sizeof(B): 24  sizeof(D):32
<span style="font-family: Arial, Helvetica, sans-serif;">#pragma pack(1)</span>
在B類前面加上#pragma pack(1)時,則按1字節對齊, <span style="font-family: Arial, Helvetica, sans-serif;">所以sizeof(B): 16  sizeof(D):24

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章