1. 程式人生 > >函式、物件在記憶體中存在形式

函式、物件在記憶體中存在形式

一、php底層記憶體分割槽


php將記憶體分為5個區。堆區一般存物件,棧區一般存基本資料型別(普通變數……)和函式,全域性區存全域性變數和靜態變數,常量區存常量,程式碼區存程式碼。

二、函式呼叫時棧區變化


這是一個簡單的遞迴函式示例。當主函式呼叫counts函式時,開闢一個新棧,執行counts函式程式碼。當最後$n等於0時執行return語句返回,且銷燬棧。以此類推,函式最後返回到主函式繼續往下執行程式碼,並輸出$sum。此時開闢的新棧均被銷燬。

因為函式呼叫時會開闢新棧,且預設值傳遞,所以形參無法改變實參。若在上圖中echo $sum程式碼後加上echo $n程式碼則輸出n值為3。因echo輸出的是原棧區的$n,而不是新棧區的$n。

三、引用實質是傳遞地址


四、物件在記憶體中存在形式


輸出為:

小明

小明