我的程序编译时出现这个问题:warning LNK4084: total image size 562585600 exceeds max (268435456); image may not run,可以运行但只要到我处理图像时就自动关闭.exe窗口跳回程序中,我想原因是我定义了很多全局变量,如
struct _tag3DCurve{
       double  v;
       double  x;
       double  y;
       double  z;
      }image1[ADD],image2[ADD],.........contourpoint[ADD][400];
这些数组程序中都要用到!
请问各位怎么解决这个溢出问题呢?先谢了!

解决方案 »

  1.   

    全局变量是程序启动时就会分配空间的吧,可能不是全局变量的问题。你的这些变量如果实在太大,又必须要用全局的话,可以声明成全局的指针,然后自己写一个初始化函数,在里面 new 出来,再把地址赋给全局的指针,也许就能解决问题
      

  2.   

    把栈上数据放到堆上,用new等方式来分配...当你程序退出的时候delete释放
      

  3.   

    定义全局变量:
    CYourStruct1 *p1 = NULL;
    CYourStruct2 *p2 = NULL;
    ...
    void InitGlobaData()
    {
      p1 = new CYourStruct1[1024];
      p2 = new CYourStruct2[1024];
      ...
    }
    程序结束后释放
    void FreeGlobalData()
    {
       delete [] CYourStruct1;
       delete [] CYourStruct2;
       ...
    }
    初始化时调用 Init..
    结束后调用 Free..
      

  4.   

    struct _tag3DCurve{ 
          double  v; 
          double  x; 
          double  y; 
          double  z; 
        }tag3DCurve *pImages = new tag3DCurve[400];