我该如何解决Visual Studio Visual C#C2148错误?这里是产生错误的代码:在visual c中是否有全局变量大小限制的解决方法?
#define ACOUNT 2000
#define BCOUNT 9000
#define CCOUNT 195
struct s_ptx {
int pvCount[ACOUNT][BCOUNT][CCOUNT];
} ;
这产生了VStudio 2010的Visual C错误#C2148(在64位编译): 错误C2148:阵列的总尺寸不能超过0x7FFFFFFF的字节
我知道我可以动态地分配pvCount 3d数组,但是之后我必须执行一个数量为零的免费模式。我有192个内存,所以我试图找到一个编译器开关或选项,允许这种大小的东西。
编辑:我离开了试图简化事物的复杂问题是,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 [jav] .pv [j] [k] [m]
这是你到达那里的一些设置。 :) – 2012-02-10 00:41:17