在原来的程序中,我定义了一个二维数组的全局变量,用于存放数据信息。由于此数组太大,导致了栈溢出,所以需要动态分配内存空间。可是二维数组的大小是不定的,只有程序运行时才能定。在这种情况下,怎样来动态分配内存呢?谢谢!!

解决方案 »

  1.   

    二位数组的列必须是常值
    int nRow = 10;
    int (*a)[20] = new int[nRow][20];
      

  2.   

    float **m;
    m=new float*[size];
    for(int i=0;i<size;i++)
       m[i]=new float[size];.....for(i=0;i<size;i++)
         delete [] m[i];
    delete [] m;
      

  3.   

    vector< vector<int> > dd;这样可以不?
      

  4.   

    float **m;
    m=new float*[size];
    for(int i=0;i<size;i++)
       m[i]=new float[size];.....for(i=0;i<size;i++)
         delete [] m[i];
    delete [] m;这方法可行我用过
      

  5.   

    to weakwater(我是河南人):
    为什么我的程序在执行delete[]m[i];语句时,当i=1时,会出现access violation错误?请指点,谢谢!!
      

  6.   

    3.1 动态二维数组的定义及批量赋值
    __int8** Maze; Maze = new __int8*[10]; for(int i=0; i<10; i++)
    {
    Maze[i] = new __int8[10];
    }

    __int8 Maze0[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    __int8 Maze1[10] = {1, 0, 0, 1, 0, 0, 0, 1, 0, 1};
    __int8 Maze2[10] = {1, 0, 0, 1, 0, 0, 0, 1, 0, 1};
    __int8 Maze3[10] = {1, 0, 0, 0, 0, 1, 1, 0, 0, 1};
    __int8 Maze4[10] = {1, 0, 1, 1, 1, 0, 0, 0, 0, 1};
    __int8 Maze5[10] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 1};
    __int8 Maze6[10] = {1, 0, 1, 0, 0, 0, 1, 0, 0, 1};
    __int8 Maze7[10] = {1, 0, 1, 1, 1, 0, 1, 1, 0, 1};
    __int8 Maze8[10] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 1};
    __int8 Maze9[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; Maze[0] = (__int8*)Maze0;
    Maze[1] = (__int8*)Maze1;
    Maze[2] = (__int8*)Maze2;
    Maze[3] = (__int8*)Maze3;
    Maze[4] = (__int8*)Maze4;
    Maze[5] = (__int8*)Maze5;
    Maze[6] = (__int8*)Maze6;
    Maze[7] = (__int8*)Maze7;
    Maze[8] = (__int8*)Maze8;
    Maze[9] = (__int8*)Maze9;
    摘自我的笔记