问答详情
源自:3-4 PHP-什么是变量的数据类型

两次代码为什么输出结果不一致?

589ad1750001f61905000250.jpg

589ad1760001a92105000287.jpg

从第四行开始多加了两行代码,为什么结果就变了呢? echo $m1; echo "
"; 上面这两行代码应该不影响结果的啊?

提问者:不完美 2017-02-08 16:07

个回答

  • jensen1991
    2017-02-08 16:19:19
    已采纳

    推荐你看一下这篇文章,写的很详细!

    深入理解PHP内存管理之谁动了我的内存

    http://www.laruence.com/2011/03/04/1894.html

  • 慕先生9451830
    2017-03-14 10:58:23

    很明显你有输出了一次变量m1

  • OK小明哥
    2017-02-08 16:17:24

    $m1是一个变量,它已经保存了memory_get_usage();函数返回的值,你后面加的echo $m1;又输出了一遍变量m1的值,所以开头会有两行217808

  • jensen1991
    2017-02-08 16:15:20

    你的程序不也要使用内存吗?php进程启动,也是需要emalloc内存的。

    php对内存的管理,不是像你想象的那样单纯,没任何操作前不会有任何内存占用,而实际上,你载入的扩展,以及php本身预定义的全局符号表等等都会占用内存。另外,php不是像c语言的malloc那样,你定义个变量,就一定会去找os要,unset时就立刻释放。一个字节不差的返回给你。尤其对于使用数组时申请内存和释放内存时会产生更奇怪的问题。

    在c语言中,我们要定义一个不确定元素个数的数组时,都是先malloc一个预估的大小,当数组变大超出我们预申请的大小时,再重新malloc。在php中这一切都帮你做好了,中间过程是隐含的,所以当你用memory_get_usage查看时会发现和你想的不一样。