为什么引用会占用更多内存?

时间:2013-03-27 02:04:01

标签: php memory reference

他们不应该让脚本使用更少的内存吗?

function a(&$var);使用的内存超过function a($var);

foreach($array as $k => &$v)使用的内存比foreach($array as $k => $v)

更多

例如$var使用24 MB。 如果我通过引用传递它它使用27 MB

1 个答案:

答案 0 :(得分:2)

(不幸的是)我没有能够详细解释zend引擎内部的 magic ,我指的是documentation

  

PHP中的引用是一种通过不同名称访问相同变量内容的方法。它们不像C指针;例如,您不能使用它们执行指针运算,它们不是实际的内存地址,依此类推。有关详细信息,请参阅参考资料。相反,它们是符号表别名。请注意,在PHP中,变量名称和变量内容是不同的,因此相同的内容可以具有不同的名称。最接近的类比是Unix文件名和文件 - 变量名是目录条目,而变量内容是文件本身。引用可以比作​​Unix文件系统中的硬链接。

我认为与unix文件系统的比较很容易理解。如果文件有多个名称,则需要额外的内存来存储这些名称。