不完美
2017-02-08 16:07
从第四行开始多加了两行代码,为什么结果就变了呢?
echo $m1;
echo "
";
上面这两行代码应该不影响结果的啊?
很明显你有输出了一次变量m1
$m1是一个变量,它已经保存了memory_get_usage();函数返回的值,你后面加的echo $m1;又输出了一遍变量m1的值,所以开头会有两行217808
你的程序不也要使用内存吗?php进程启动,也是需要emalloc内存的。
php对内存的管理,不是像你想象的那样单纯,没任何操作前不会有任何内存占用,而实际上,你载入的扩展,以及php本身预定义的全局符号表等等都会占用内存。另外,php不是像c语言的malloc那样,你定义个变量,就一定会去找os要,unset时就立刻释放。一个字节不差的返回给你。尤其对于使用数组时申请内存和释放内存时会产生更奇怪的问题。
在c语言中,我们要定义一个不确定元素个数的数组时,都是先malloc一个预估的大小,当数组变大超出我们预申请的大小时,再重新malloc。在php中这一切都帮你做好了,中间过程是隐含的,所以当你用memory_get_usage查看时会发现和你想的不一样。
PHP入门篇
455994 学习 · 6306 问题
相似问题