分析代码有何问题?

void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );
}

知识点

char str[]="Student";
将字符指针作为串地址,为管理字符串提供了方便
char *string="Student";
对字符指针可以用串常量初始化,实际上系统完成两步操作:首先申请堆空间,然后填入串值。但不能以数组元素形式初始化
char *sp={'S','t','u','d','e','n','t'}; //错误
则系统将报告编译错误。因为sp不是字符型数组,仅仅是一个字符型指针,只能以一个字符型变量的地址进行初始化。
从存储内容上看,string和str是一样的,但str是常指针(内存的直接地址),而string是可以作为左值的指针变量。在程序中,可以对字符指针变量进行以下操作:
string++;
string="new string";
一个一维数组可以存放一个字符串,二维数组可以对字符串进行管理,如果改用指针数组,就不必限制每个串的长度了,如
char *name[5]={"Chen Ming","Li Ying","Zhang Xiao jian","Huang Qiang","He Yong fei"};
C++会对串常量自动添加结束标志\0

问题

char* str1 = "0123456789";串常量自动添加结束标志后占11个字节,string[10]放不下,导致数组越界。