在visual c中是否有全局变量大小限制的解决方案?

在visual c中是否有全局变量大小限制的解决方案?,c,size,malloc,global-variables,limit,C,Size,Malloc,Global Variables,Limit,如何解决Visual Studio Visual C#C2148错误?以下是产生错误的代码: #define ACOUNT 2000 #define BCOUNT 9000 #define CCOUNT 195 struct s_ptx { int pvCount[ACOUNT][BCOUNT][CCOUNT]; } ; 这会产生VStudio 2010 Visual C(在64位下编译)错误#C2148: 错误C2148:数组的总大小不得超过0x7fffffff字节 我知道我

如何解决Visual Studio Visual C#C2148错误?以下是产生错误的代码:

#define ACOUNT 2000
#define BCOUNT 9000
#define CCOUNT 195

struct s_ptx {

      int pvCount[ACOUNT][BCOUNT][CCOUNT];
} ;
这会产生VStudio 2010 Visual C(在64位下编译)错误#C2148: 错误C2148:数组的总大小不得超过0x7fffffff字节

我知道我可以动态分配pvCount 3d数组,但是我必须做大量的alloc和free。我有192Gig的内存,所以我试图找到一个编译器开关或选项来允许这种大小的东西

编辑:我在试图简化问题时忽略了一个复杂的问题,即ptx是一个指针,在运行时用作结构数组:

ptx *Ptx        =  (ptx *)   calloc(10,  sizeof(ptx));
for (int i = 0; i < 10; ++i)
    {
     Ptx->pv = (int (*)[BCOUNT][CCOUNT] )  malloc( (unsigned long) ACOUNT * BCOUNT *CCOUNT * sizeof(int));

}


 for (int jav = 0; jav < 10; ++jav)
        for (int j = 0; j < ACOUNT; ++j)
            for (int k = 0; k < BCOUNT; ++k)
                for (int m = 0; m < CCOUNT; ++m)
                    Ptx[jav].pv[j][k][m] = j + k + m;
ptx*ptx=(ptx*)calloc(10,sizeof(ptx));
对于(int i=0;i<10;++i)
{
Ptx->pv=(int(*)[BCOUNT][CCOUNT])malloc((无符号长)ACOUNT*BCOUNT*CCOUNT*sizeof(int));
}
对于(int-jav=0;jav<10;++jav)
对于(int j=0;j

因此,当我运行代码时,我得到了一个访问冲突错误,可能是因为通过执行动态分配,我不再能够使用:Ptx[jav].pv[j][k][m]

您不需要大量的malloc。只是:

int (*arr)[BCOUNT][CCOUNT]=malloc((size_t)ACOUNT*BCOUNT*CCOUNT*sizeof int);

编辑:必须转换为
大小\u t
,以避免溢出整数。

这是您在那里得到的一些设置。:)