PHP 内核之旅系列
PHP内核之旅-1.生命周期
PHP内核之旅-2.SAPI中的Cli
PHP内核之旅-3.变量
PHP内核之旅-4.字符串
zend_string
1 typedef struct _zend_string zend_string; //定义 zend_string变量
2 struct _zend_string { //_zend_string结构体
3 zend_refcounted_h gc;
4 zend_ulong h; /* hash value */
5 size_t len;
6 char val[1];
7 };
变量 | 描述 | |
---|---|---|
1 | gc | 变量的引用计数信息,内存管理会用到 |
2 | h | harh code, 字符串通过Times33算法计算得到的 |
3 | len | 字符串的长度 |
4 | val[1] | 字符串的内容 |
注意:
1. zend_string = 引用计数 + 字符串hash code + 字符串长度 + 字符串内容。
2. 字符串val是一个可变数组,val[1]表示默认存放'\0' 字符串结束符。
3. val[0]存放空字符串。当字符串不为空时,val[0 ~ len]存放的是字符串内容。val[len+1] = '0\'
比如'test'字符串是这样存放的:
val[0] = 't'
val[1] = 'e'
val[2] = 's'
val[3] = 't'
val[4] = '\0' 字符串结束符
参考资料:
http://www.php-internals.com/
PHP7内核剖析
作 者: Jackson0714 出 处:http://www.cnblogs.com/jackson0714/ 关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教! 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。 特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我 声援博主:您的鼓励是作者坚持原创和持续写作的最大动力!