分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

PHP内核之旅-4.可变长度的字符串

发布时间:2023-09-06 01:54责任编辑:林大明关键词:PHP

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‘  字符串结束符

PHP内核之旅-4.可变长度的字符串

原文地址:https://www.cnblogs.com/jackson0714/p/php4.html

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved