inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

PacketSession

메모리 동적할당 질문 드립니다.

782

gamecoding

작성한 질문수 9

0

스크린샷 2023-03-10 025348.png스크린샷 2023-03-10 025410.png

안녕하세요 강사님 동적 할당으로 메모리를 할당해서 패킷을 보낼려고 하는데

왜 (int dir, bool wDown) 값을 추가해서 메모리를 동적할당 하게 되면 스크린샷 2023-03-10 025625.png메모리 엑세스 위반 에러가 나오게 되는건가요?

왜 이런 에러가 뜨는건지 감을 못잡겠어서 질문 드립니다...

네트워크 MMORPG windows-server

답변 1

0

Rookiss

위 내용만으론 저도 알 수 없습니다.
크래시 나는 위치가 어디인가요? p->objects 설정하는 부분인지 추후 보내는 부분인지를 봐야 할 것 같네요

0

gamecoding

크래시가 나는 위치는 do_send(p) 함수가 호출 되는 부분입니다. 스크린샷 2023-03-10 142514.pngdo_send가 호출되고 인자로 받은 packet을 받아와서 메모리 복사하는 과정에서 패킷의 값이 이상하게 나와버립니다..스크린샷 2023-03-10 142445.png스크린샷 2023-03-10 143031.png스크린샷 2023-03-10 143000.png

0

Rookiss

memcpy에 BP를 걸고 거길 유심히 살펴보세요.

1) wsa.len에 들어가는 값이 146이 맞는지
2) _sendBuf는 최소 146 바이트 이상인지 (new char[1000]으로 대체해보면 쉽게 테스트 가능하겠죠)

그리고 memcpy 같은건 어셈으로 보는게 별다른 의미가 없습니다.
차라리 실험을 하면서 범인을 색출하는게 빠릅니다.
마지막으로 개인 작업은 어떻게 어딜 고친지 알 수가 없어서
저도 코드를 봐드릴 수가 없습니다.

writeLock을 잡을때 꼭 empty 상태여야하는 이유?

0

36

2

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

0

73

2

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

0

129

1

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

0

66

1

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

0

89

2

성능 테스트 결과

0

108

2

게임 서버 Stateful, Stateless 진로 고민

0

133

1

WaitOnAddress와 Sleep의 차이 질문

0

84

1

궁금한거 있습니다.

0

84

2

JobTimer 구동 스레드

0

108

2

TryPop() 동작 관련 질문

0

81

1

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

0

151

2

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

0

73

1

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

0

88

2

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

0

146

2

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

0

105

2

mutex와 sleep 차이점

0

120

1

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

0

161

2

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

0

98

1

공부법 관련해서

0

184

2

MakeShared 함수 관련

0

114

1

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

0

145

2

운영체제관련 질문입니다

0

132

1

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

0

120

2