VirtualAlloc함수 및 메모리 질문
이퓨리한나
2023.04.01
질문 내용 : 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기가까지 할당해주는건지??