最近又重新溫習了一下深度探索c++對象模型,中虛拟繼承虛表的實作,為了弄清虛表的記憶體部局情況特寫此測試程式。
測試程式分别在windows vs2012下,與linux gcc 4..4.7 20120313 redhat4.4.7-4下
windows vs2012
上圖中的偏移為-4表明存在vptr,如果為0說明沒有vptr,下面的程式可以說明,而且從圖中可以看出虛表中不會有重複的選項
linux gcc 4.4.7
此圖為linux下的虛繼承的記憶體部局圖, 圖中可以看出虛表中有重得的選項,但是此圖可以看出它相對于win下的部局它沒有偏移的指針
從圖中能夠反應出,類的大小與win的差距還是很大的