堆栈中出现一堆??(),怎么回事?

projoy 2009-05-04 09:53:34
程序如下,运算过程没有问题,只不过运行到return 0时,堆栈中一下子出现很多??(),导致运行时出错,这是怎么了?
#include <iostream>   using namespace std;
int main ()
{
int a[10000];
memset(a,0,sizeof(a));
for(int i=1;i<10000;++i){
a[i/1000+(i/100)%10+(i/10)%10+i%10+i]=1;
}
for(int i=1;i<10000;++i){
if(a[i]==0){
cout<<i<<endl;
}
}
return 0;
}

堆栈中的情况
#0  0x00000001 in ?? ()
#1 0x00000001 in ?? ()
#2 0x00000001 in ?? ()
#3 0x00000001 in ?? ()
#4 0x00000001 in ?? ()
#5 0x00000001 in ?? ()
#6 0x00000001 in ?? ()
#7 0x00000001 in ?? ()
#8 0x007f1b18 in ?? ()
#9 0x00000001 in ?? ()
#10 0x00000001 in ?? ()
#11 0x00000001 in ?? ()
#12 0x00000001 in ?? ()
#13 0x00000001 in ?? ()
#14 0x00000001 in ?? ()
#15 0x00000001 in ?? ()
#16 0x00000001 in ?? ()
#17 0x00000001 in ?? ()
#18 0x00000001 in ?? ()
#19 0x77b31e9e in ?? ()
#20 0x00000001 in ?? ()
#21 0x77f5a943 in ?? ()
#22 0x00000001 in ?? ()
#23 0x00000000 in ?? ()
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
野男孩 2009-05-04
  • 打赏
  • 举报
回复
当i>=9900+10x+y时(0<=x,y<=9),i/1000=9, (i/100)%10=9, (i/10)%10=x, i%10=y

所以i/1000+(i/100)%10+(i/10)%10+i%10+i >= 9+9+x+y+9900+10x+y, 这时候要大于10000很容易了。


顺便说下出现??是因为访问越界,把main函数的返回地址给改写了,改写后的这个虚拟地址没有对应的物理内存页,所以集成调试环境把这些位置显示成??
nwao7890 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Paradin 的回复:]
a[i/1000+(i/100)%10+(i/10)%10+i%10+i]=1;

i比较接近10000时下标会越界
[/Quote]
i/1000<10 (i/100)%10<10 (i/10)%10<10 i%10<10 再加上i(如果i接近10000)肯定越界
nwao7890 2009-05-04
  • 打赏
  • 举报
回复
sizeof(a)=40000
Oversense 2009-05-04
  • 打赏
  • 举报
回复
没找到符号
black_night 2009-05-04
  • 打赏
  • 举报
回复
两次定义变量i不会编译不过吗?
我运行后没问题啊,不会运行出错!
liliangbao 2009-05-04
  • 打赏
  • 举报
回复
程序马上结束了~
自动清除栈数据了
Paradin 2009-05-04
  • 打赏
  • 举报
回复
a[i/1000+(i/100)%10+(i/10)%10+i%10+i]=1;

i比较接近10000时下标会越界
Sou2012 2009-05-04
  • 打赏
  • 举报
回复
路过!!
hw324306893 2009-05-04
  • 打赏
  • 举报
回复
路过

65,211

社区成员

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

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