C语言编程求助,酬金1000元RMB
我的程序代码如下: for(j=1;j<=10000;j++)
{
if(head_se==NULL) /*将产生的二次电子添加到二次电子链表尾部*/
{
head_se=(Particle*)malloc(sizeof(Particle));
if(head_se==NULL)
{
printf("\nNot enough memory or allocate memory error happened.\n");
exit (1);
}
tail_se=head_se;
head_se->previous=NULL;
}
else
{
tail_se->next=(Particle*)malloc(sizeof(Particle));
if(tail_se->next==NULL)
{
printf("\nNot enough memory or allocate memory error happened.\n");
exit (1);
}
tail_se->next->previous=tail_se;
tail_se=tail_se->next;
}
/**********************************************************************/
/******更新电子速度-得到碰撞后的速度*********/
/**********************************************************************/
Rf1=ran1(p_idum);
Rf2=ran1(p_idum);
tail_se->v.vr=fabs(v_extent*sqrt(Rf2*(2-Rf2))*sin(2*PI*Rf1))/V_N;
tail_se->v.vt=v_extent*sqrt(Rf2*(2-Rf2))*cos(2*PI*Rf1)/V_N;
tail_se->v.vz=v_extent*(1-Rf2)/V_N;
tail_se->mass=ME;
tail_se->charge=e_sim;
tail_se->p00=0; /*权重系数需在下一循环重新计算*/
tail_se->p01=0;
tail_se->p10=0;
tail_se->p11=0;
tail_se->next=NULL;
}
其中head_se和tail_se是指向我定义的结构体的指针变量。
上面是我的程序代码中的一段,9870步之前运行都正常,但是第9871个循环时,显示“Not enough memory or allocate memory error happened.”,即我上面程序中
tail_se->next=(Particle*)malloc(sizeof(Particle));
if(tail_se->next==NULL)
{
printf("\nNot enough memory or allocate memory error happened.\n");
exit (1);
}
给 tail_se->next分配内存失败
我的问题是:1.是什么导致 tail_se->next=(Particle*)malloc(sizeof(Particle))失败的?
2.为什么前面9870个循环都每问题,9871步却出现这个问题?
哪位大神能够帮我解决这个问题,本人给酬金100人民币,可微信红包。请联系我:17739971880
[此贴子已经被作者于2017-10-23 21:36编辑过]