问答详情
源自:6-8 字符串函数

strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串

内存空间不能重叠什么意思?

什么情况会重叠?

提问者:5769727 2017-09-23 17:03

个回答

  • qq_晴_22
    2017-10-13 20:31:08

    内存重叠:拷贝的目的地址在源地址范围内。所谓内存重叠就是拷贝的目的地址和源地址

    有重叠。

    举个内存重叠环境的例子:

     

    int main() 

    {char *p = NULL; 

    p=(char*)malloc(100); 

    memcpy(p,"123456789",strlen("123456789")); //

    会等到错误的结果,有一个长度参数,只能拷

    cnt

     

    //

    字节就结束了

     

    printf("before p =%s\n",p); 

    strcpy(p+1,p); //

    注意:这里重叠了,而

    strcpy

    是根据判断原串中的

    '\0' 

    printf("after p =%s\n",p); 

    free(p);