C语言:数组定义问题

C语音:数组定义时使用字符串赋值,字符串长度大于数组长度会有什么问题
const unsigned char a[6] = "123456";

unsigned char b[6];

memcpy(b, a, 6);

会导致字符串越界,也就是字符串最后一个字符不是字符串结束符。越界的字符会写到字符串后续的内存中。一旦这些内存已经被占用,则会崩溃

越界,部分编译器会报错。更老的编译器直接将多的数值写进字符串地址空间之后的字段,从而覆盖其他变量的值