真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP底層分析中強制分裂的講解

今天小編給大家分享的是PHP底層分析中強制分裂的講解,簡單來說,強制分裂就是”在引用變量主動賦值前,該變量傳值賦值過,就會發(fā)生強制分裂?!?/p>

浉河網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

話說起來比較繞,看下代碼解析吧。

看下面的代碼:

PHP底層分析中強制分裂的講解

稍微熟悉 PHP:&引用符號都應(yīng)該可以看出,output分別為gzchen,傍晚八點半,gzchen。

那么我們來看看以上代碼的底層運行流程吧。

眾所周知,一個變量就是一個結(jié)構(gòu)體,長成下面這樣:

PHP底層分析中強制分裂的講解

每一行都寫了注釋,此文件在zend.h在PHP源碼Zend的目錄下。

當(dāng)代碼運行到line:3[$name = ‘傍晚八點半’]的時候,內(nèi)存中的結(jié)構(gòu)體長這樣:

PHP底層分析中強制分裂的講解

當(dāng)代碼運行到line:4[name]的時候,結(jié)構(gòu)體變成這樣:

PHP底層分析中強制分裂的講解

運行到line:5[Misplaced &name]和line:[$nameCopy = ‘gzchen’],是這樣:

PHP底層分析中強制分裂的講解

此處,此處,就是此處發(fā)生了強制分裂。

當(dāng)is_ref__gc[引用屬性]從0->1,如果refcont_gc>1,那么就會發(fā)生強制分裂。偽代碼就是:

PHP底層分析中強制分裂的講解

這個就是強制分裂。原本已經(jīng)經(jīng)過傳值賦值的變量,再次引用賦值出去。被傳值賦值的變量就會被分裂出一個結(jié)構(gòu)體,在這里是$myName。

實際開發(fā)基本用不到這層原理,但在面試中強制分裂通常會和寫時復(fù)制(cow)一起考。

關(guān)于PHP底層分析中強制分裂的講解就分享到這里了,希望以上內(nèi)容可以對大家有一定的參考價值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。


分享文章:PHP底層分析中強制分裂的講解
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/igcied.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部