char *prime = (char *)VirtualAlloc(NULL, 2147483648, MEM_COMMIT, PAGE_READWRITE);
printf(%d, &prime[2147483647]);// 요렇게 하면 주소가 출력 되거든요(물론 십진수로)?
printf(%d, prime[2147483647]);// 근데 이렇게 직접 값을 참조하려고 하면 에러가 나네요. 이것뿐이 아니라
prime[0] = 1; 이렇게 값을 대입하려고 해도 에러가 나고....
왜 이런거죠? 예약도 아니고 COMMIT이면 직접 할당 받은걸로 아는데...
그리고 주소도 출력된다면 제대로 할당받은거 맞는거 같은데 왜 그 공간에 접근하려고 하면 에러가 나나요?...
그리고 32비트 컴,os에서는 이론상으론 4기가까지 메모리를 지원하고 윈도우는 거기서 약 2기가만 할당해준다고 들었거든요
맞나요? 맞다면 여기서의 2기가는 RAM의 메모리까지 포함한건지, 아니면 가상메모리만 2기가까지 할당해주는건지??
이플 2026.08.10
항상 답변 감사드립니다 ^^; 변수만 선언해도 일단 메모리에 잡히는군요...그걸 간과했네요. 근데 답변보고 실험하다가 안건데 char * prime; printf(\%d\