memcpy 第三个参数 超过了第二的长度 不报错?

2025-02-25 01:00:07
推荐回答(3个)
回答1:

可以查看内存。编译器一般是顺序放变量的。
所以a 的7个字节后面是b的10个字节。
所以a读写越界后操作了b的数据。完全不提倡这样做。
但是此次大概不会报错。

用new就不同了。越界经常报错。

回答2:

#include
#include
int main()
{
char a[] = "123456";
char b[10] ={0};
printf("[%s]\n",a);
printf("[%s]\n",b);
memmove(b,a,10);
printf("[%s]\n",b);
return 0;
}
试下看看运行结果。
即使超长度,我估计也是截取长度内的字符串显示。

回答3:

编译的时候不会报错的,运行的时候就可能会出现异常了。