/* concatenates "bar" after the newly reallocated large enough "FOO" */
memcpy(ZSTR_VAL(foobar) + ZSTR_LEN(FOO), ZSTR_VAL(bar), ZSTR_LEN(bar));
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个操作是将
"bar"连接到新的重新分配的足够大的空间"FOO"之后,其中
ZSTR_VAL返回的是char*,ZSTR_LEN返回的是int。指针可以理解为内存地址,现有空间头部的指针即为
ZSTR_VAL(foobar),向后加上空间FOO的长度,就是FOO空间结束时的内存地址,从此处开始进行内存拷贝,赋值bar的值(即为ZSTR_VAL(bar)),长度为ZSTR_LEN(bar)。