php内核memcpy不解

    /* concatenates "bar" after the newly reallocated large enough "FOO" */
    memcpy(ZSTR_VAL(foobar) + ZSTR_LEN(FOO), ZSTR_VAL(bar), ZSTR_LEN(bar));
阅读 2.8k
1 个回答
void* memcpy(void * destination, const void * source, size_t num);

这个操作是将"bar"连接到新的重新分配的足够大的空间"FOO"之后,
其中ZSTR_VAL返回的是char*ZSTR_LEN返回的是int

指针可以理解为内存地址,现有空间头部的指针即为ZSTR_VAL(foobar),向后加上空间FOO的长度,就是FOO空间结束时的内存地址,从此处开始进行内存拷贝,赋值bar的值(即为ZSTR_VAL(bar)),长度为ZSTR_LEN(bar)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题