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 2,010 카메라 C를 오류 # 1 C2148 (64 비트에 따라 컴파일)이 생성 오류 C2148 : 어레이의 전체 크기는 0x7fffffff 바이트를
I를 초과하지 않아야 내가 동적으로 pvCount 3d 배열을 할당 할 수 있다는 것을 알았지 만, 그때는 무한한 alloc과 free를해야 할 것입니다. 192 기가의 메모리가 있으므로 컴파일러 스위치 나이 크기의 것을 허용하는 옵션을 찾으려고합니다.
편집 : 나는이 코드를 실행하면
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 [jav] .pv [j] [k] [m]
그게 당신이 거기 설치있어. :) –