64,641
社区成员
发帖
与我相关
我的任务
分享
void test()
{
char string[10],str1[10];
int i;
for(i=0;i<10;i++)
{
str1[i]='a';
}
//越界就是在程序中,你访问超出分配空间的边界。
//str1[10],那么分配了10个该类型大小的空间,
//即str1[9]是改数组最好一个元素,超过他就是越界了
strcpy(string,str1);
}
/*这个程序在strcpy(string, str1)之前是没有越界,
因为没有结束符'\0',在使用strcpy()以后就出问题了。
为什么?
因为strcpy()是从str1首地址起,一直遇到'\0'才结束。这样的话
那么就超过了初始str1的分配10个空间的大小,又因为是拷贝,所以也
超过了string初始分配10空间的大小。
*/