<?php
class obj
{
public $data = array();
function __construct()
{
$this->data = range(1,10000);
}
}class ref
{
public $obj = null;
function __construct(&$obj = null)
{
$this->obj = $obj;
}
}$obj = new obj();
$ref = new ref($obj);
echo memory_get_usage();大家试试 ref($obj) ref 的构造中使用 传值 和 传引用的 不同内存使用率。 并求解。
解决方案 »
- make:***[install -recursive]Error 1错误是什么原因
- 求助关于php中加载本地播放器
- 利用$_SERVER["HTTP_REFERER"]却得不到链接本页面的上一页面的URL,怎么回事?
- 运行phpmyadmin,说无法载入 mysql 扩展,请检查 PHP 配置,我的环境是iis+php5.2.4+mysql5.0,已经按照网上查找的方法改了,但还是不行,
- 在一个html文件中,如何去除html标记,取得纯文字?
- 在网页中怎样内嵌Media Player Classic 播放mpg2的视频
- 关于ob_函数的问题?
- 重定向问题?
- 在微信内置浏览器里,为什么有的图片能双击打开,有的图片则不行
- js wap
- CKeditor 怎么修改编辑窗的颜色呢?
- php程序显示空白是什么原因,帮忙看看
<?php
class obj
{
public $data = array();
function __construct()
{
$this->data = range(1,10000);
}
}class ref
{
public $obj = null;
function __construct($obj = null) //这里用引用和不加引用 看到内存变化 但是 把下面 注销的那句开启 内存却不变化?
{
$this->obj = $obj;
}
}//$obj = new obj();
$obj = 111;
$ref = new ref($obj);
echo memory_get_usage();?>
2. 所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。此时,如果对目标对象进行修改,内存中的数据也会改变。
3. 一般传值省内存,当需要对大数据进行操作的时候,传址节省内存,当需要函数多返回值的时候也可以引用传参。
#5所示的是php内部实现的机制,更一般的理解是:php在维护一张变量表,每个变量或对象(特殊的变量)都是这个表中的一个元素
传值,就是复制表中指定的元素到新的位置
传引用,就是将该变量在表中的位置传递给使用者