-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
DummyClient.PlayerInfoReq.Write()의 동작 원리 중 질문이 있습니다.
21.08.11 19:40 작성 조회수 259
0
SendBufferHelper를 통해 Open만 해줬을 뿐인데
어떻게 s가 ThreadLocalStorage에 있는 SendBuffer의 _buffer 값에 접근을 할 수 있는지 궁금합니다.
다시 말해 s는 분명 구조체 타입이고,
TryWriteBytes로 s에 패킷 데이터를 밀어 넣어준 다음에
SendBufferHelper.Close를 했는데,
어떻게 s의 정보가 ThreadLocalStorage에 있는 SendBuffer의 _buffer에도 남아 있는지 궁금합니다.
디버깅을 찍어보니깐 SendBuffer.Close()가 호출이 될 때,
새롭게 생성한 ArraySegment의 인자로 들어가는 _buffer 값이 s의 값이더라구요.
패킷의 데이터를 실제로 넣은 곳은 s인데 어떻게 ThreadLocalStorage에 있는 SendBuffer의 _buffer 값에도 영향을 주는 것인지..
ArraySegment가 class 타입이면 SendBufferHelper.Open으로 생성한 ArraySegment 를 참조해서 가능하겠거니
이해가 되겠는데 struct 타입이라 도저히 이해가 되지 않아요..ㅠ
어떤 마법과도 같은 일이 있었는지 알려주시면 감사하겠습니다 :D
답변을 작성해보세요.
1
Rookiss
지식공유자2021.08.11
https://www.inflearn.com/questions/69958
비슷한 질문이 있었는데 위 그림을 보시면 이해가 쉬울 것 같습니다.
차동훈
질문자2021.08.11
ArraySegment는 구조체이지만 ArraySegment 안에 있는 Array는 배열 타입이기 때문에 원본 Array, 즉 SendBuffer._buffer의 값을 참조하고 있다고 이해하면 될까요?
답변 1