动态分配内存new..... 
delete[]

解决方案 »

  1.   

    float (*cp)[25][10];
    cp = new float[99999][25][10];delete[] cp;
      

  2.   

    修改默认栈大小
    project->setting什么的,找找最好还是堆里动态分配,同上面
      

  3.   

    struct AAA{
    LPSTR name;
    int kkk;
    };void CDialog1::OnButton1() 
    {
    AAA (*myaaa)[1000];
    myaaa = new AAA[1000][1000]; myaaa[0][1].name="sdffsdfssfsdffffsdfs"; ::MessageBox(0,myaaa[0][1].name,"",MB_OK);
    delete[] myaaa;
    }
      

  4.   

    struct AAA{
    LPSTR name;
    int kkk;
    };void CDialog1::OnButton1() 
    {
    AAA (*myaaa)[1000];
    myaaa = new AAA[1000][1000]; myaaa[0][1].name="sdffsdfssfsdffffsdfs"; ::MessageBox(0,myaaa[0][1].name,"",MB_OK);
    delete[] myaaa;
    }
      

  5.   

    VC6编译器为每个程序分配的默认堆栈空间为1M,你不经过特殊处理就要用大于1M的空间,当然要出现堆栈溢出了:(在链接程序时有一个参数,可以指定要系统给这个进程分配的默认堆栈空间的大小:)或者在程序中自己申请私有堆栈空间,不知你用这么大空间要干什么,不行的话也可用内存映射文件:)
      

  6.   

    用堆空间或者修改编译参数扩大栈空间我都可以理解,可是竟然有人提议用
    链表实在让我faint不已。
    实在要用stl也该用vector呀。
      

  7.   

    修改栈默认栈大小
    点击Project->Setting菜单
    在Link页下的文本框里加入
    /STACK:4000000
    后面的数字可以根据需要修改,现在是4M
      

  8.   

    你一定是直接在函数内部声明的数组吧?这样会直接使用程序的堆栈,400*400应该是会溢出的。如果在堆里动态分配一般不会溢出。double **p;
    p = new double*[1000];
    for (int i=0; i<1000; i++) p[i] = new double[1000];之后就可以用 p[999][999] 的形式使用这个数组了。