2017-02-11 46 views
1

http://php.net/manual/en/internals2.variables.intro.php空值占用多少内存?

在研究它时,我对如何声明变量的理解完全改变了。我来自.net背景的PHP。什么我的理解是,当我们decalre的

int x = 32;

自从我们宣布整型,所以它采取4 bytes内存空间,并且空值不占用任何空间,而他们指向NULL的内存引用。

在研究这本PHP手册时,我无法总结出一件事情,即空值如何占用内存中的空间。

感谢

+1

问题是PHP变量是“动态的”,关于它们所持有的信息的类型和价值。所以,分配它可能是一个数字。下一行可以分配一个字符串!所以,当你声明一个变量时,它可以保存所有可能的类型!即它是一个记录。通过查看记录的字段,可以找到它当前拥有的类型和价值。提供的答案解释了更多。即你声明了可以容纳任何东西的变量'$ x'。然后它被设置为键入int和值32.但这些只是记录'$ x'中的字段。 –

回答

2

应该只占据了VAR声明的部分(一个不适合的内容)的变量本质上是一个zval_struc

typedef struct _zval_struct { 
    zvalue_value value;  /* variable value */ 
    zend_uint refcount__gc; /* reference counter */ 
    zend_uchar type;   /* value type */ 
    zend_uchar is_ref__gc;  /* reference flag */ 
} zval; 

采取看起来这一些技巧http://www.slideshare.net/jpauli/understanding-php-memory/12-PHP

http://php.net/manual/en/internals2.variables.intro.php

+0

让我看看这位先生,谢谢 – rummykhan