課程
/后端開發(fā)
/PHP
/PHP入門篇
從第四行開始多加了兩行代碼,為什么結(jié)果就變了呢? echo $m1; echo ""; 上面這兩行代碼應(yīng)該不影響結(jié)果的啊?
2017-02-08
源自:PHP入門篇 3-4
正在回答
推薦你看一下這篇文章,寫的很詳細(xì)!
深入理解PHP內(nèi)存管理之誰動了我的內(nèi)存
http://www.laruence.com/2011/03/04/1894.html
不完美 提問者
很明顯你有輸出了一次變量m1
慕先生9451830
$m1是一個變量,它已經(jīng)保存了memory_get_usage();函數(shù)返回的值,你后面加的echo $m1;又輸出了一遍變量m1的值,所以開頭會有兩行217808
你的程序不也要使用內(nèi)存嗎?php進(jìn)程啟動,也是需要emalloc內(nèi)存的。
php對內(nèi)存的管理,不是像你想象的那樣單純,沒任何操作前不會有任何內(nèi)存占用,而實(shí)際上,你載入的擴(kuò)展,以及php本身預(yù)定義的全局符號表等等都會占用內(nèi)存。另外,php不是像c語言的malloc那樣,你定義個變量,就一定會去找os要,unset時就立刻釋放。一個字節(jié)不差的返回給你。尤其對于使用數(shù)組時申請內(nèi)存和釋放內(nèi)存時會產(chǎn)生更奇怪的問題。在c語言中,我們要定義一個不確定元素個數(shù)的數(shù)組時,都是先malloc一個預(yù)估的大小,當(dāng)數(shù)組變大超出我們預(yù)申請的大小時,再重新malloc。在php中這一切都幫你做好了,中間過程是隱含的,所以當(dāng)你用memory_get_usage查看時會發(fā)現(xiàn)和你想的不一樣。 ? ? ? ?
舉報
PHP入門教程輕松學(xué)習(xí),行業(yè)大牛幫您快速掌握PHP編程基礎(chǔ)知識。
7 回答如果是這樣的代碼,為什么結(jié)果不輸出0?
7 回答為什么我的代碼沒有輸出結(jié)果
2 回答輸出結(jié)果有html代碼
2 回答結(jié)果不一致
3 回答為什么我的輸出結(jié)果不對
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-02-08
推薦你看一下這篇文章,寫的很詳細(xì)!
深入理解PHP內(nèi)存管理之誰動了我的內(nèi)存
http://www.laruence.com/2011/03/04/1894.html
2017-03-14
很明顯你有輸出了一次變量m1
2017-02-08
$m1是一個變量,它已經(jīng)保存了memory_get_usage();函數(shù)返回的值,你后面加的echo $m1;又輸出了一遍變量m1的值,所以開頭會有兩行217808
2017-02-08
你的程序不也要使用內(nèi)存嗎?php進(jìn)程啟動,也是需要emalloc內(nèi)存的。
php對內(nèi)存的管理,不是像你想象的那樣單純,沒任何操作前不會有任何內(nèi)存占用,而實(shí)際上,你載入的擴(kuò)展,以及php本身預(yù)定義的全局符號表等等都會占用內(nèi)存。另外,php不是像c語言的malloc那樣,你定義個變量,就一定會去找os要,unset時就立刻釋放。一個字節(jié)不差的返回給你。尤其對于使用數(shù)組時申請內(nèi)存和釋放內(nèi)存時會產(chǎn)生更奇怪的問題。
在c語言中,我們要定義一個不確定元素個數(shù)的數(shù)組時,都是先malloc一個預(yù)估的大小,當(dāng)數(shù)組變大超出我們預(yù)申請的大小時,再重新malloc。在php中這一切都幫你做好了,中間過程是隱含的,所以當(dāng)你用memory_get_usage查看時會發(fā)現(xiàn)和你想的不一樣。 ? ? ? ?