这篇文章主要介绍了PHP 变量结构体的相关知识,文中提到了PHP5中的 zval和PHP 7 中的 zval,代码简单易懂,需要的朋友可以参考下
PHP5 中的 zval
多数文章,在提到PHP5 变量结构体的时候,都提到:sizeof(zval) == 24,sizeof(zvalue_value) == 16,实际上这个论述并不准确,在 cpu 为 64bit 时,这个结果是正确的。
但当 cpu 为32bit 时: sizeof(zval) == 16,sizeof(zvalue_value) == 8,主要因为 cpu 为 64bit 时,指针占用8个字节,而 32bit时,指针为4个字节。
PHP 7 中的 zval
PHP 7的看似很多,但其实更简单了,不论 cpu 是32bit 还是 64bit,sizeof(zval) 永远都是等于 16。
主要看 zend_value 中的 ww,是两个 uint32_t,这个永远是 8 个字节,所以 sizeof(zend_value) == 8,因此 sizeof(zval) == 16。
所以 PHP7 新特性提到的节省内存这点上,在 32bit 系统中,PHP5 => PHP7 并无变化。
顺便说下 sizeof,不能当做函数,虽然写法像函数,这个数值会在编译期就确定好,非运行期。类似编译预处理。
总结
以上所述是小编给大家介绍的PHP 变量结构体,希望对大家有所帮助。程序员遇到问题都会上(编程之家jb51.cc)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!