/* concatenates "bar" after the newly reallocated large enough "FOO" */
memcpy(ZSTR_VAL(foobar) + ZSTR_LEN(FOO), ZSTR_VAL(bar), ZSTR_LEN(bar));
/* concatenates "bar" after the newly reallocated large enough "FOO" */
memcpy(ZSTR_VAL(foobar) + ZSTR_LEN(FOO), ZSTR_VAL(bar), ZSTR_LEN(bar));
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答3.3k 阅读
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
1.1k 阅读
这个操作是将
"bar"
连接到新的重新分配的足够大的空间"FOO"
之后,其中
ZSTR_VAL
返回的是char*
,ZSTR_LEN
返回的是int
。指针可以理解为内存地址,现有空间头部的指针即为
ZSTR_VAL(foobar)
,向后加上空间FOO
的长度,就是FOO
空间结束时的内存地址,从此处开始进行内存拷贝,赋值bar
的值(即为ZSTR_VAL(bar)
),长度为ZSTR_LEN(bar)
。