变量怎么会突变,再次请教。
我再一个线程中进行计算,为何在运行过程中,时间一常pcom的一个变量b会突然变为10875909632,这个变量我在循环开始就赋值,一直没有改变它。其它变量有的也跳变。
下面是主程序代码以及出错的函数代码:
UINT ThreadFunc(LPVOID pParam)
{
CCompute com(64);
CCompute* pcom=&com;
pcom->flagei=1;
CParticlesI* pari3=NULL;//CParticlesI是另外一个类
pcom->Initial(0.21,6,6, 0.00000001, 0.2,0.00000001,
0.2,0.0,0, 1.0e-11,1000,3.3e19,100,-100,0.0);//这里初始化
for (int l=0;l<pcom->m_NP0;l++)
pcom->AddParticlesI(6.68e-23,4.8e-7);
pcom->m_NPI=pcom->GetParticlesICount();
//进入大循环
while(a<1000)
{
pcom->InitV(2.0e4,5.6e7,0.0);
pcom->flagei=1;
for(int a=0;a<pcom->m_NPI;a++)
{
pari3=pcom->GetParticlesI(a);
pari3->func();
}
pari3=NULL;
pcom->m_NPI=pcom->GetParticlesICount();
//计算电荷密度
pcom->Calcucharge();
pcom->Force();
pcom->Accelp();
pcom->Movep();
a=a+1;
}
}
void CCompute::Calcucharge()//计算电荷密度
{
CParticlesE* ppar=NULL;
CParticlesI* pparI=NULL;
CParticlesEe* ppare=NULL;
for(int ir=0;ir<b;ir++)//程序出错后调试停在这,b跳变
{
m_Grid[ir].m_rhog=0.0;
}
.........
}
我的重载的CCompute构造函数是这样的
CCompute::CCompute( int b0)
{
b=b0;
m_Grid=new CGrid[b];
}
CGrid是另外一个类,跳变的正是b,我的b是在构造函数里初始化里的呀。