對象內(nèi)存布局
在高級編程語言中蒿涎,軟件開發(fā)人員除了使用基礎(chǔ)類型之外歧焦,還會使用復合類型沈矿。按照面向?qū)ο缶幊趟枷氲恼f法上真,這些復合類型叫做類。軟件開發(fā)人員在定義了類之后羹膳,就可以對其進行實例化睡互,而后使用。那么陵像,類定義和類實例化到底做了什么呢就珠?
如果從程序編譯及運行時內(nèi)存使用的角度來考慮,類定義醒颖,其實就是組合了部分數(shù)據(jù)類型妻怎。程序開發(fā)人員在完成這種組合之后,在程序編譯的過程中泞歉,編譯器會根據(jù)軟件開發(fā)人員定義的類蹂季,按照既定的標準來計算這個類的內(nèi)存占用量,以及類中各個字段在這個類的偏移量疏日。
在類實例化的過程中,其實就是按照編譯時計算的類的內(nèi)存占用量及實際傳入的參數(shù)撒汉,來計算實例化一個類的對象沟优,需要使用的內(nèi)存的總大小,并根據(jù)計算之后的結(jié)果睬辐,調(diào)用內(nèi)存管理相關(guān)函數(shù)來完成內(nèi)存的分配挠阁。
從內(nèi)存、進程的角度來看溯饵,并沒有類侵俗、對象的概念,只有內(nèi)存地址的概念丰刊。類的定義隘谣、實例化和使用,最終都變成了對內(nèi)存中一塊數(shù)據(jù)的解釋方法啄巧。