1.c++繼承體系中內(nèi)存布局的padding是保留的,這是為了防止父類和子類互相賦值時出現(xiàn)語義錯誤。
2.同樣由于內(nèi)部實現(xiàn)的差別,如padding或vptr的存在,慎用memset等內(nèi)存直接操作方式,c++標準沒有規(guī)定內(nèi)存的布局細節(jié)。
3.指向?qū)ο蟪蓡T的指針類型,其值是偏移值,這就產(chǎn)生一個問題,指向第一個成員的偏移值為0,空指針值也為0,必須對這種情況加以區(qū)分,實現(xiàn)策略是將指向成員的指針值(偏移)被加1,用以和空指針區(qū)分開來,因此使用指向成員的指針值應減1以得到真實的偏移。
X::*p=0 ;
X::*p=&X::first ;