如何获取PHP变量的内存地址?
<?php$a='name';?>下例中,定义一个变量$a,值是name.如何取得$a在内存的实际地址?我想取得$a变量的内存地址,为了测试一个问题:对于$a='name...
<?php
$a = 'name';
?>
下例中,定义一个变量$a,值是name.如何取得 $a 在内存的实际地址?
我想取得$a变量的内存地址,为了测试一个问题:
对于 $a = 'name'; 这个句PHP语句
是不是 $a 是在 PHP的虚拟机中保持的实际是到内存的堆(heap)中的地址,内存其实不知道$a 只是在内存堆中 0xAFF($a的内存地址)保存值name,
/-- 内存地址 heap --/ /-- 内存值 --/
/-- 0xAFFF --/ /-- name --/
而对于 $arr = array(1,2,3);
首先会在内存堆(heap)中完成array(1,2,3)语句,得到数组起始地址 0xAAAA,然后把这个起始地址放在栈(stack)中。
/-- 内存地址 heap --/ /-- 内存值 --/
/-- 0xAAAA --/ /--1,2,3 --/
...
...
/-- 内存地址 stack --/ /-- 内存值 --/
/-- 0xFFFF --/ /--0xAAAA --/
当 $arrayCopy = $arr; 数组和对象是引用复制
修改 $arrayCopy时,$arr也会改变。
意思是:我能获取变量的内存地址,就能验证我的思路是否正确?求帮助 展开
$a = 'name';
?>
下例中,定义一个变量$a,值是name.如何取得 $a 在内存的实际地址?
我想取得$a变量的内存地址,为了测试一个问题:
对于 $a = 'name'; 这个句PHP语句
是不是 $a 是在 PHP的虚拟机中保持的实际是到内存的堆(heap)中的地址,内存其实不知道$a 只是在内存堆中 0xAFF($a的内存地址)保存值name,
/-- 内存地址 heap --/ /-- 内存值 --/
/-- 0xAFFF --/ /-- name --/
而对于 $arr = array(1,2,3);
首先会在内存堆(heap)中完成array(1,2,3)语句,得到数组起始地址 0xAAAA,然后把这个起始地址放在栈(stack)中。
/-- 内存地址 heap --/ /-- 内存值 --/
/-- 0xAAAA --/ /--1,2,3 --/
...
...
/-- 内存地址 stack --/ /-- 内存值 --/
/-- 0xFFFF --/ /--0xAAAA --/
当 $arrayCopy = $arr; 数组和对象是引用复制
修改 $arrayCopy时,$arr也会改变。
意思是:我能获取变量的内存地址,就能验证我的思路是否正确?求帮助 展开
2016-01-08 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
楼上说的对,没必要搞这么深,而且脱离了你的主题就更没意思了。
$arrayCopy是$arr的copy,两者没有关系,如果你希望那样的话可以用
$arrayCopy = &$arr,此时$arrayCopy是$arr的引用,也就是说修改这个时那个也变了。
php中的对象实例是引用方式传递的,其他一般都是传值,除非加&表示传址。
$arrayCopy是$arr的copy,两者没有关系,如果你希望那样的话可以用
$arrayCopy = &$arr,此时$arrayCopy是$arr的引用,也就是说修改这个时那个也变了。
php中的对象实例是引用方式传递的,其他一般都是传值,除非加&表示传址。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
PHP你没有必要研究这个,对于在内存的存放PHP他已经经过几层编译了,PHP,不像C,C++或是汇编等语言,对底层和硬件的操作很少接触。你要弄懂这个原理,建议你好好学习下C语言。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你不用去验证你的思路,本身php就是这么做的
是引用复制,但在一些底层的操作中,php对不同的操作都做了不同的设置
关于这些你可以通过研究PHP的源代码去分析PHP的内存原理
是引用复制,但在一些底层的操作中,php对不同的操作都做了不同的设置
关于这些你可以通过研究PHP的源代码去分析PHP的内存原理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询