VirtualAlloc으로 할당한 메모리에 접근하면 오류가 납니다

VirtualAlloc으로 2147483648바이트를 할당한 뒤 `prime[2147483647]`의 주소를 출력하면 값이 나오는데, 직접 값을 읽거나 `prime[0] = 1`처럼 대입하면 오류가 납니다.
MEM_COMMIT으로 할당했는데도 메모리에 접근할 수 없는 이유가 뭘까요?
32비트 컴퓨터와 운영체제에서 메모리를 최대 4GB까지 지원하고, 윈도우가 프로세스에 약 2GB를 할당해 준다는 설명도 맞는지 궁금합니다.
여기서 말하는 2GB는 실제 RAM을 포함하는 건가요, 가상 메모리만을 뜻하나요?

댓글 1

  • 동은 2026.08.10

    항상 답변 감사드립니다 ^^ 변수만 선언해도 메모리를 차지한다는 점을 놓쳤네요.
    답변을 보고 확인하다가 알게 된 게 있는데, `char *prime; printf("%d"`