2017-02-11 115 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