为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

什么情况会重叠?

正在回答

1 回答

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

有重叠。

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

 

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); 


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信