c语言中的memcpy实现

https://blog.csdn.net/goodwillyang/article/details/45559925

这里说一下为什么内存重叠的时候,使用strcpy会出现崩溃。

char * strcpy(char *dst,const char *src)   //[1]
{
    assert(dst != NULL && src != NULL);    //[2]

    char *ret = dst;  //[3]

    while ((*dst++=*src++)!='\0'); //[4]

    return ret;
}

如下调用:

char *p = "123";
strcpy(p+1,p)

p字符串"123"的变化依次->"113"->"111",当strcpy函数while中dst是'\0'的时候会把最后的'1'复制进去,导致没有'\0'了,死循环了。

猜你喜欢

转载自blog.csdn.net/skillart/article/details/96362699
今日推荐