void* memcpy(void * destination, const void * source, size_t num);
这个操作是将"bar"连接到新的重新分配的足够大的空间"FOO"之后,其中ZSTR_VAL返回的是char*,ZSTR_LEN返回的是int。
"bar"
"FOO"
ZSTR_VAL
char*
ZSTR_LEN
int
指针可以理解为内存地址,现有空间头部的指针即为ZSTR_VAL(foobar),向后加上空间FOO的长度,就是FOO空间结束时的内存地址,从此处开始进行内存拷贝,赋值bar的值(即为ZSTR_VAL(bar)),长度为ZSTR_LEN(bar)。
ZSTR_VAL(foobar)
FOO
bar
ZSTR_VAL(bar)
ZSTR_LEN(bar)
这个操作是将
"bar"
连接到新的重新分配的足够大的空间"FOO"
之后,其中
ZSTR_VAL
返回的是char*
,ZSTR_LEN
返回的是int
。指针可以理解为内存地址,现有空间头部的指针即为
ZSTR_VAL(foobar)
,向后加上空间FOO
的长度,就是FOO
空间结束时的内存地址,从此处开始进行内存拷贝,赋值bar
的值(即为ZSTR_VAL(bar)
),长度为ZSTR_LEN(bar)
。