Как обойти ошибку 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 bytes
Я знаю, что мог бы динамически выделить 3d-массив pvCount, но тогда мне пришлось бы делать миллионы выделений и свободных.У меня 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]