定义了这样一个结构体struct st2
{
     int x;
     st1 y[dim];           // 其中st1为另一个结构体,dim为维数
};如果令dim=99,999的常量时,则出现如下的错误:
fatal error C1126: automatic allocation exceeds 2G请教高手如何解决??因为我必须要定义这么大的一个结构体,谢谢~

解决方案 »

  1.   

    ......不能拆开来么?晕.. 栈是有大小的啦默认为1M, 
    不一定要定义在结构体里,放出来动态申请就好了 st1 *p_y = new st1[dim];就好了
      

  2.   

    定义成结构体指针,然后new,就可以了,否则栈就会溢出。
      

  3.   

    一个Windows进程拥有4G的地址空间。而应用程序实际拥有的空间是2G,另外的2G被系统占用了。
    楼主一下子分配那么大的空间,肯定回出错的。
        要解决这个问题可以进行文件操作,还有就是增大进程空间(这种方法目前使用较少)。 
      

  4.   

    CreateFileMapping、MapViewOfFile,但View要小一些。
      

  5.   

    定义成指针后会出现这个问题:
    only static const integral data members can be initialized within a class
      

  6.   


    我是不懂
    不懂为啥在CPP文件里定义这样的变量就可以,上面那些是定义在头文件里的
      

  7.   

    struct st2 

         int x; 
         st1* ;           // 其中st1为另一个结构体,dim为维数 
    }; 
     y = new st1[V];