2013-03-27 47 views
3

不應該讓腳本使用更少的內存嗎?爲什麼引用使用更多的內存?

function a(&$var);使用比function a($var);

foreach($array as $k => &$v)和使用更多的內存比foreach($array as $k => $v)

例如$var使用24 MB更多的內存。 如果我按引用傳遞它,它採用27 MB

+1

你如何測量使用的內存? – Jocelyn 2013-03-27 02:08:45

+0

memory_get_peak_usage – user1806244 2013-03-27 02:09:31

+0

你在$ var中存儲什麼值? – Necrolyte2 2013-03-27 02:17:16

回答

2

(不幸),而不能解釋魔術詳細Zend引擎內部的引擎蓋下,我指的是documentation

PHP中的引用是一種通過不同名稱訪問相同變量內容的方法。他們不像C指針;例如,您不能使用它們執行指針運算,它們不是實際的內存地址,等等。查看什麼參考不是更多信息。相反,它們是符號表別名。請注意,在PHP中,變量名稱和變量內容不同,因此相同的內容可能具有不同的名稱。最接近的類比是Unix文件名和文件 - 變量名稱是目錄條目,而可變內容是文件本身。引用可以比喻爲Unix文件系統中的硬鏈接。

我認爲與unix文件系統的比較很容易理解。如果文件有多個名稱,則需要額外的內存來存儲這些名稱。

相關問題