C语言崩溃是什么问题

求教此程序#include<iostream>usingnamespacestd;intprimes(intx){inti;for(i=2;i*i<=x;i++)if(x... 求教此程序
#include<iostream>
using namespace std;
int primes(int x){
int i;
for(i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;
}
int main(){
freopen("prime.in","r",stdin);
freopen("prime.out","w",stdout);
int i,n;
long long a[200000005];
scanf("%d",&n);
for(i=n/2+1;i>=1;i--)
{if(primes(i)&&n%i==0&&primes(n/i))
printf("%d",a[i]);}
return 0;
}
展开
 我来答
ckpyn
2014-07-14 · TA获得超过2052个赞
知道小有建树答主
回答量:1179
采纳率:85%
帮助的人:378万
展开全部
1、数组下标超界;
例如:定义a[10];却赋值a[12]=100;

2、指针未分配内存(即专业人士所说的野指针)就直接使用,导致访问不允许访问的内存单元;
例如:int *p;没分配内存就赋值*p=25;

3、标准C函数未按要求调用,有时会出错误结果,有时会导致程序崩溃;
4、试图修改不允许修改的指针。
例如:
int a[20], b[30];
a=b; //试图将数组a所等价的指针a直接指向数组b,这肯定会出错

目前我只想到这4条。

代码中的数组:long long a[200000005];,是否消耗太多内存?至少要消耗1.5G的内存。
main()开头的2个freopen函数调用,没发现任何作用,是否有问题?

如果满意,欢迎采纳我的解答,谢谢
如有疑问,欢迎追问
潮范君
2014-07-14 · 知道合伙人软件行家
潮范君
知道合伙人软件行家
采纳数:1440 获赞数:2874
从事软件开发工作一年有余,主要C++方向。

向TA提问 私信TA
展开全部
最常见的崩溃错误,数组的访问越界。
比如:
int a[4];
然后又这样去赋值 a[4] = 5; 这就越界了,绝对崩溃。
多注意下,有些指针使用malloc申请空间后,用完记得 free释放出来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiapingwen
2014-07-14 · TA获得超过131个赞
知道小有建树答主
回答量:420
采纳率:0%
帮助的人:169万
展开全部
一般是出现野指针操作了不应该操作的内存导致。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式