我的程序:extern int I;
extern int J;float *cwei = new float[(I+2)*(J+2)];
float *u = new float[(I+2)*(J+2)];
float *v = new float[(I+2)*(J+2)];void init(void)
{
for(int n2=0;n2<(I+1);n2++)
{
for(int n3=0;n3<(J+1);n3++)
{
  
*(cwei+n2*(J+1)+n3) = 0.0f;
*(u+n2*(J+1)+n3) = 0.0f;
  *(v+n2*(J+1)+n3) = 0.0f; :程序运行到这里报错!
}
}
}
I,J是外部变量,从另一个.CPP文件中传过来,I=112,J=144;
cwei,u,v是全局数组变量;
当程序运行到大约 n2=100; n3=110时,在“*(v+n2*(J+1)+n3) = 0.0f”这行报错:Unhandled exception at 0x004151d0 in Tidal Module.exe: 0xC0000005: Access violation writing location 0x003cd000.哪位大侠知道怎么回事啊?请帮我看看,很着急啊!

解决方案 »

  1.   

    这样赋值效率多低啊,用memset
      

  2.   

    估计是越界了,超过了数组的大小了
    全部填0的话
    可以这样
    void init(void)
    {
    memset(cwei,0,sizeof(float)*(I+2)*(J+2));
    memset(u ,0,sizeof(float)*(I+2)*(J+2));
    memset(v ,0,sizeof(float)*(I+2)*(J+2));
    }
      

  3.   

    按照LZ的意思,就是为数组赋值我把代码改成了下面的:我运行le一下是没问题的:float *cwei = new float[(I+2)*(J+2)];
    float *u = new float[(I+2)*(J+2)];
    float *v = new float[(I+2)*(J+2)];void init(void)
    {
    long num = 0;
    for(int n2=0;n2<=(I+1);n2++)
    {
    for(int n3=0;n3<=(J+1);n3++)
    {
    *(cwei+n2*(J+2)+n3) = 1.0f;
    *(u+n2*(J+2)+n3) = 1.0f;
    *(v+n2*(J+2)+n3) = 1.0f; 
    }
    }
    }