inflearn logo
강의

Course

Instructor

[MMORPG Game Development with C++ and Unreal Series] Part 4: Game Server

Stomp Allocator

VirtualFree 함수 질문입니다.

501

snu

34 asked

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

network windows-server MMORPG

Answer 2

1

Rookiss

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

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

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

0

snu

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

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

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

 

 

Memory Pool에서 오버플로우 질문입니다.

0

55

2

포토폴리오 및 진로 관련하여 고민입니다.

0

95

1

포토폴리오 관련 고민입니다.

0

49

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

74

2

성능 테스트 결과

0

97

2

게임 서버 Stateful, Stateless 진로 고민

0

113

1

WaitOnAddress와 Sleep의 차이 질문

0

78

1

궁금한거 있습니다.

0

78

2

JobTimer 구동 스레드

0

103

2

TryPop() 동작 관련 질문

0

78

1

로드맵 C#서버 C++서버 방향성 질문

0

142

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

70

1

생명주기를 위한 의도적 복사

0

81

2

락프리의 실무에서 사용 질문

0

137

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

98

2

mutex와 sleep 차이점

0

114

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

149

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

91

1

공부법 관련해서

0

179

2

MakeShared 함수 관련

0

110

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

140

2

운영체제관련 질문입니다

0

127

1

send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.

0

114

2

메모리 풀 질문있습니다.

0

119

1