강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của tjsrldhdn3264
tjsrldhdn3264

câu hỏi đã được viết

[Tuyển tập phát triển game MMORPG bằng C++ và Unreal] Phần 4: Máy chủ game

Bộ phân bổ dậm chân

VirtualFree 함수 질문입니다.

Viết

·

485

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씩 할당 받는다해도 이전의 주소가 임의의 값 아닌가요?
networkwindows-serverMMORPG

Câu trả lời 2

1

Rookiss님의 프로필 이미지
Rookiss
Người chia sẻ kiến thức

 
막상 데이터를 보면 address는 8바이트의 임의의 숫자입니다.
-> 음 질문이 잘 이해가 안 가는데 혹시 어느 부분이 임의 숫자인가요?

[ <------offset-----------> [ 할당영역 ]]
0 -------------------------↑address 4095
 
여기서 0에 해당하는 시작 주소가 0x1000 배수로 할당되고,
할당 크기에 따라 offset 만큼 띄워주니
address는 랜덤이 아닙니다.

0x1000 align이 되지 않는다면
헤더값을 넣어서 할당 위치를 표기한다거나
뭐 다양한 방법으로 우회하면 됩니다.

0

snu님의 프로필 이미지
snu
Người đặt câu hỏi

여기서 0에 해당하는 시작 주소가 0x1000 배수로 할당되고

-> 이 부분을 몰랐었네요....그냥 0에 해당하는 시작주소가 운영체제가 할당해주는 가상메모리의 임의의 주소인줄 알았는데 페이지 사이즈의 배수로 할당해주는군요

페이지 사이즈의 배수가 아닌경우도 있나요?

 

 

Hình ảnh hồ sơ của tjsrldhdn3264
tjsrldhdn3264

câu hỏi đã được viết

Đặt câu hỏi