strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串
内存空间不能重叠什么意思?
什么情况会重叠?
内存空间不能重叠什么意思?
什么情况会重叠?
2017-09-23
内存重叠:拷贝的目的地址在源地址范围内。所谓内存重叠就是拷贝的目的地址和源地址
有重叠。
举个内存重叠环境的例子:
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);
}
举报