天天看點

c++記憶體部局(虛繼承)

最近又重新溫習了一下深度探索c++對象模型,中虛拟繼承虛表的實作,為了弄清虛表的記憶體部局情況特寫此測試程式。

測試程式分别在windows vs2012下,與linux gcc 4..4.7 20120313 redhat4.4.7-4下

windows vs2012

c++記憶體部局(虛繼承)

上圖中的偏移為-4表明存在vptr,如果為0說明沒有vptr,下面的程式可以說明,而且從圖中可以看出虛表中不會有重複的選項

c++記憶體部局(虛繼承)
c++記憶體部局(虛繼承)

linux gcc 4.4.7

c++記憶體部局(虛繼承)

此圖為linux下的虛繼承的記憶體部局圖, 圖中可以看出虛表中有重得的選項,但是此圖可以看出它相對于win下的部局它沒有偏移的指針

c++記憶體部局(虛繼承)

從圖中能夠反應出,類的大小與win的差距還是很大的

下一篇: centos