我用一个二级指针代替二维数组
在调用程序里我用
 coefficientA =(float **)new float[3000][20] ;
被调用程序为:
void CWaveView::LinearPredict(short *frameBox, float ** coefficientA, int num)
{
 ....
for(i=1;i<=ORDER;i++)
   coefficientA[num][i]=coef[i];
.......
}
编译能通过,但是调试时,它在coefficientA[num][i]=coef[i处提示我Access Violation
什么原因啊?请指点!

解决方案 »

  1.   

    你问题都没有写清楚,你的coef是什么都没有说.
      

  2.   

    coef是一个float 型的一维数组
      

  3.   

    你的ORDER是不是超出20了?查查看
      

  4.   

    像这样分配二维数组:
    float** coefficientA =new float*[3000];
    for(int i=0;i<3000;i++)
       coefficientA [i]=new float[20];然后可以用coefficientA[num][i]来访问了。删除的时候这样:
    for(int i=0;i<3000;i++)
       delete []coefficientA[i];
    delete []coefficientA;
      

  5.   

    你的coefficientA是个float **,coefficientA[num][i]是一个float *,coef是float *,
    coef[i]是float,怎么能够赋值
      

  6.   

    很有可能就是你的数组越界了!
    for(i=1;i<=ORDER;i++)
       coefficientA[num][i]=coef[i];
    这里ORDER可能超过20了
      

  7.   

    你的coefficientA是个float **,coefficientA[num][i]是一个float *,coef是float *,
    coef[i]是float,怎么能够赋值老大,coefficientA[num][i]怎么会是float* ?
      

  8.   

    数组没有越界
    我敢肯定
    ORDER 定义为20
    会palship:
    但是赋值时系统没有提示出错啊
    我的意思是二维数组和二级指针的通用方法是个什么样子的
      

  9.   

    感谢你们!
    尤其是 webber84
    谢谢你!