-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
VirtualFree 함수 질문입니다.
22.04.04 22:08 작성 조회수 259
1
Release 함수에서 baseAddress를 구할때
[ <------offset-----------> [ 할당영역 ]]
0 -------------------------↑address 4095
만약 page가 1개만 할당되었을 경우 offset을 구하려면
위와 같이 0~4096 주소 범위라면 address 값 자체가 3000이면
address%page_size =3000 이고
address -3000=0 으로
baseAdress를 구하는 것은 이해가 되는데
막상 데이터를 보면 address는 8바이트의 임의의 숫자입니다.
0~4095,4096~8191 과 같이 주소값 자체가 PageSize로 나타나는 것이 아닌데 address%page_size 가 offset을 나타내는게 가능한가요? baseAddress부터는 4096씩 할당 받는다해도 이전의 주소가 임의의 값 아닌가요?
답변을 작성해보세요.
1
Rookiss
지식공유자2022.04.05
막상 데이터를 보면 address는 8바이트의 임의의 숫자입니다.
-> 음 질문이 잘 이해가 안 가는데 혹시 어느 부분이 임의 숫자인가요?
[ <------offset-----------> [ 할당영역 ]]
[ <------offset-----------> [ 할당영역 ]]
0 -------------------------↑address 4095
여기서 0에 해당하는 시작 주소가 0x1000 배수로 할당되고,
할당 크기에 따라 offset 만큼 띄워주니
address는 랜덤이 아닙니다.
할당 크기에 따라 offset 만큼 띄워주니
address는 랜덤이 아닙니다.
0x1000 align이 되지 않는다면
헤더값을 넣어서 할당 위치를 표기한다거나
뭐 다양한 방법으로 우회하면 됩니다.
헤더값을 넣어서 할당 위치를 표기한다거나
뭐 다양한 방법으로 우회하면 됩니다.
0
snu
질문자2022.04.05
여기서 0에 해당하는 시작 주소가 0x1000 배수로 할당되고
-> 이 부분을 몰랐었네요....그냥 0에 해당하는 시작주소가 운영체제가 할당해주는 가상메모리의 임의의 주소인줄 알았는데 페이지 사이즈의 배수로 할당해주는군요
페이지 사이즈의 배수가 아닌경우도 있나요?
답변 2