Skip to content

Commit b5aa507

Browse files
authored
Merge pull request pangudashu#9 from magnetoeric/patch-1
Update zval.md
2 parents 225b7bb + 793759b commit b5aa507

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

2/zval.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ struct _zval_struct {
6060
};
6161
```
6262
`zval`结构比较简单,内嵌一个union类型的`zend_value`保存具体变量类型的值或指针,`zval`中还有两个union:`u1``u2`:
63-
* __u1:__ 它的意义比较直观,变量的类型就通过`u1.type`区分,另外一个值`type_flags`为类型掩码,在变量的内存管理、gc机制中会用到,第三部分会详细分析,至于后面两个`const_flags``reserved`暂且不管
63+
* __u1:__ 它的意义比较直观,变量的类型就通过`u1.v.type`区分,另外一个值`type_flags`为类型掩码,在变量的内存管理、gc机制中会用到,第三部分会详细分析,至于后面两个`const_flags``reserved`暂且不管
6464
* __u2:__ 这个值纯粹是个辅助值,假如`zval`只有:`value``u1`两个值,整个zval的大小也会对齐到16byte,既然不管有没有u2大小都是16byte,把多余的4byte拿出来用于一些特殊用途还是很划算的,比如next在哈希表解决哈希冲突时会用到,还有fe_pos在foreach会用到......
6565

6666
`zend_value`可以看出,除`long``double`类型直接存储值外,其它类型都为指针,指向各自的结构。

0 commit comments

Comments
 (0)