24小时热门版块排行榜    

查看: 377  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

daily_7

铜虫 (小有名气)

[求助] 【求助】vs2010为什么会出现以下错误呀?已有1人参与

程序是这样:
                for(i=0;i<nu;i++){fxp=fyp=fzp=0;mx=my=mz=0;}
//-----------------计算空隙率--------------------------------------------------
                        for(i=0;i<l1;i++)for(j=0;j<m1;j++)for(k=0;k<n1;k++){voi[j][k]=1.0;cell[j][k]=0;}
                        for(i=0;i<nu;i++)
                        {
                                cx=(int)(px/dx)+1;cz=(int)(pz/dz)+1;cy=1;//cy=(int)(py/dy)+1;//当前颗粒所在网格
                                printf("%d,%d,%d,%f,%f,%f\n",cx,cy,cz,px,py,pz);
                                voi[cx][cy][cz]-=(4*pi*r[pk]*r[pk]*r[pk]/3/vol);//pk:i颗粒的种类
                                ini=cell[cx][cy][cz];cpn[cx][cy][cz][ini]=i;cell[cx][cy][cz]++;//cell[][][]该网格内的颗粒数 cpn[][][][]第i个颗粒在该网格的序号为ini
                                if(cell[cx][cy][cz]==(1+CM))
                                {
                                        printf("cell_n is too full!\n该网格内颗粒数=%d\tcx=%d\tcy=%d\tcz=%d\n",cell[cx][cy][cz],cx,cy,cz);
                                        exit(0);
                                }
                        }

【求助】vs2010为什么会出现以下错误呀?
11.PNG
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

daily_7

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by baghnac at 2015-11-16 12:31:43
代码不够完整
从提示来看,是访问非法地址(0x000000000)了,代码没全,仅作部分分析

for(i=0;i<l1;i++)for(j=0;j<m1;j++)for(k=0;k<n1;k++){voi=1.0;cell=0;}
这里里 voi = 1.0
voi 这里改变了这个 ...

for(m=0;m<save;m++)
                {
                        tnow+=dts;//当前时间值
                       
//-----------------接触力和矩初始化--------------------------------------------
                        for(i=0;i<nu;i++){fxp=fyp=fzp=0;mx=my=mz=0;}
//-----------------计算空隙率--------------------------------------------------
                        for(i=0;i<l1;i++)for(j=0;j<m1;j++)for(k=0;k<n1;k++){voi[j][k]=1.0;cell[j][k]=0;}
                        for(i=0;i<nu;i++)
                        {
                                printf("%d.",m);
                                cx=(int)(px/dx)+1;cz=(int)(pz/dz)+1;cy=1;//cy=(int)(py/dy)+1;//当前颗粒所在网格
                                printf("%d,%d,%d,%f,%f,%f\n",cx,cy,cz,px,py,pz);
                                voi[cx][cy][cz]-=(4*pi*r[pk]*r[pk]*r[pk]/3/vol);//pk:i颗粒的种类
                                ini=cell[cx][cy][cz];cpn[cx][cy][cz][ini]=i;cell[cx][cy][cz]++;//cell[][][]该网格内的颗粒数 cpn[][][][]第i个颗粒在该网格的序号为ini
                                printf("ini=%d",ini);
                                if(cell[cx][cy][cz]==(1+CM))
                                {
                                        printf("cell_n is too full!\n该网格内颗粒数=%d\tcx=%d\tcy=%d\tcz=%d\n",cell[cx][cy][cz],cx,cy,cz);
                                        exit(0);
                                }
                        }
//                        for(i=8;i<13;i++)for(j=1;j<3;j++)for(k=8;k<15;k++)voi[j][k]=(float)0.3;
//-----------------碰撞计算----------------------------------------------------
                    ac();
//-----------------计算流体力--------------------------------------------------
                        if(tnow>tt)//tt为投颗粒过程,开始进风时间
                        {
                                fluidf();
                                for(i=0;i<nu;i++)
                                {
                                        fxp+=fxf;
                                        fyp+=fyf;
                                        fzp+=fzf;
                                }
                        }
}
3楼2015-11-16 14:09:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

baghnac

金虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
daily_7: 金币+1, 有帮助 2015-11-16 14:34:03
代码不够完整
从提示来看,是访问非法地址(0x000000000)了,代码没全,仅作部分分析

for(i=0;i<l1;i++)for(j=0;j<m1;j++)for(k=0;k<n1;k++){voi[j][k]=1.0;cell[j][k]=0;}
这里里 voi[j][k] = 1.0
voi[j][k] 这里改变了这个指针的值,指向0x00000001
所以在voi[cx][cy][cz]所用时,可能就访问的是0x00000001的地址,如果voi是int型的,且cz=1,那访问的就是图中的0x00000005这个非法访问地址
Beagreathackernotacracker!
2楼2015-11-16 12:31:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

daily_7

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by baghnac at 2015-11-16 12:31:43
代码不够完整
从提示来看,是访问非法地址(0x000000000)了,代码没全,仅作部分分析

for(i=0;i<l1;i++)for(j=0;j<m1;j++)for(k=0;k<n1;k++){voi=1.0;cell=0;}
这里里 voi = 1.0
voi 这里改变了这个 ...

voi[][][]是float型的
4楼2015-11-16 14:11:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

daily_7

铜虫 (小有名气)

我知道哪里错了 我初始定义数组 的范围比实际小 改过来就好了 谢谢你
5楼2015-11-16 14:33:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见