为什么我这代码能在codeblock跑,在vs就不行?

[复制链接]
查看11 | 回复2 | 2013-3-1 11:41:02 | 显示全部楼层 |阅读模式
这明显是数组越界写了。bool prime[N];unsigned i,j;
prime[0]=prime[1]=false;prime[2]=true;
for(i=3;i<=N;i++)//大小为N的数组,下标最大为N-1,当i为N时越界写,会造成不可预知的错误
{ if(i%2==0)
prime=false;
else
prime=true;
} 不同的编译器处理可能不同,我在VC6下跑,正常运行结束,在VS2010下跑不行,可能是VS2010检查更严格一点。把=去掉之后就可以正常运行:
f...
回复

使用道具 举报

千问 | 2013-3-1 11:41:02 | 显示全部楼层
栈空间不足,你把bool prime[N];定义成全局的或者static的就没问题了,这种大数组写成局部变量是不合适的。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行