读书人

数组越界的几个经典实例

发布时间: 2012-08-21 13:00:21 作者: rapoo

数组越界的几个经典范例
//1.下面代码有什么错误?
Void test1()
{
char string[10];
char *str1="0123456789";
strcpy(string, str1);

}


//--------------------------------------
2.下面代码有什么问题?
Void test2()
{
char string[10], str1[10];
for(i=0; i<10;i++)
{
str1[i] ='a';
}
strcpy(string, str1);
}


//--------------------------------------
//3.下面代码有什么问题?
Void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)
{
strcpy(string, str1);
}
}


//上面几个问题都是数组越界
//strcpy拷贝的结束标志是查找字符串中的/0 因此如果字符串中没有遇到/0的话 会一直复制,直到遇到/0,上面的123都因此产生越界的情况

//建议使用 strncpy 和 memcpy


读书人网 >移动开发

热点推荐