時間:2022-04-28 21:24:01 | 來源:行業(yè)動態(tài)
時間:2022-04-28 21:24:01 來源:行業(yè)動態(tài)
vptr和vtable是C 的一個概念:當你定義的類型中有虛函數(shù)存在時,內(nèi)存對象的第一個位置會存放一個vptr指針,該指針指向vtable(虛函數(shù)表)。因此當你開始創(chuàng)建的自定義類型一開始沒有虛函數(shù)時(包括虛析構函數(shù)virtual ~MyClass()),一切運行正常。有一天你重構此類型,增加了一些虛函數(shù):DUANG,一切都崩塌了!原因就在于Unmanaged側內(nèi)存對象的排列規(guī)則變了,原有的對象字段都被新加入的vptr往后面移位了。此時可能你唯一能做的就是通過Layout.Explicit來手工對齊每一個字段新的位置。關鍵詞:布局,變化,函數(shù)
微信公眾號
版權所有? 億企邦 1997-2022 保留一切法律許可權利。