什么是数组越界,会有什么后果!

wangqingyun1 2011-12-26 04:42:26
void test()
{
char string[10],str1[10];
int i;
for(i=0;i<10;i++)
{
str1[i]='a';
}
strcpy(string,str1);
}
这个例子!
...全文
1438 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2011-12-26
  • 打赏
  • 举报
回复
越界--你使用的空间超过了分配给你的

后果-- park 车时park 在两个位置间。。。
nanoHappy 2011-12-26
  • 打赏
  • 举报
回复
可能改写了其他堆栈空间
恨天低 2011-12-26
  • 打赏
  • 举报
回复
core错误
modicum_ck 2011-12-26
  • 打赏
  • 举报
回复


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空间的大小。
*/
gykgod 2011-12-26
  • 打赏
  • 举报
回复
说不好电脑会爆炸的 小心为好啊
iamnobody 2011-12-26
  • 打赏
  • 举报
回复
错误的行为有什么后果根本不值得浪费时间去研究.不要做就好了
赵4老师 2011-12-26
  • 打赏
  • 举报
回复
比如你肠穿孔了,会有什么后果?
GoonYangXiaofang 2011-12-26
  • 打赏
  • 举报
回复
'\0'
riyueming184 2011-12-26
  • 打赏
  • 举报
回复
越界会引起未定义行为
ouyh12345 2011-12-26
  • 打赏
  • 举报
回复
在默认对齐为4的情况下
void test()
{
char string[10],str1[10];
int i;
for(i=0;i<10;i++)
{
str1[i]='a';
}
str1[i] = '\0';
strcpy(string,str1);
}
这种情况,虽然越界了,但没什么影响
ouyh12345 2011-12-26
  • 打赏
  • 举报
回复
后果不一定,与字节对齐也有关系

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧