작성
·
408
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
ArraySegment는 구조체이지만 ArraySegment 안에 있는 Array는 배열 타입이기 때문에 원본 Array, 즉 SendBuffer._buffer의 값을 참조하고 있다고 이해하면 될까요?