ITPub博客

首页 > IT职业 > IT职场 > PHP7中的数据类型

PHP7中的数据类型

IT职场 作者:ciscopuke 时间:2021-09-09 10:26:32 0 删除 编辑

PHP中变量名zval,变量值zend_value。其变量内存是通过引用计数管理的,在PHP7中引用计数在value结构中。

变量类型:

头文件在PHP源码 /zend/zend_types.h

图片描述

内部实现:

PHP通过zval这个结构体来表示一个变量,而不同类型的变量值则通过zval嵌入的一个人联合体表示,即zend_value。

图片描述

图片描述

 zend_value是一个联合体,其代码如下:

图片描述

ast、ptr、zv这些类型只给内核自己使用。

字符串:

PHP为字符串单独定义了一个结构:zend_string。在zend_value中通过str指向具体结构。

图片描述

图片描述

图片描述

 

存储字符串内容的val比较特殊。

val并没有使用char*类型,字符串分配时是类似这样操作的:malloc(sizeof(zend_sting)+字符串长度),就是会多分配出一些内存来存储字符串内容,这块多出来的内存起始位置就是val。

这样做的好处可以省去一次内存分配(char*),且更有助于内存管理。

val中多出来的一个字节(结构体中为val[1]而不是val[0])用于存储存储字符串的最后一个字符"

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4369/viewspace-2822058/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: JSP 内置对象(一)
请登录后发表评论 登录
全部评论

注册时间:2019-08-12

  • 博文量
    81
  • 访问量
    7126