강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

BBAKK님의 프로필 이미지
BBAKK

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Serialization #2

ReadOnlySpan관련

작성

·

563

0

Rookiss님 강의 잘보고 있습니다.

BitConverter로 

ArraySegment<T> 또는 ReadOnlySpan을 new하는 부분에서 궁금한게 있습니다.

struct는 stack영역에 할당된다고 하셨는데요

이걸 계속 쪼개서 new로 할당한다는 것은 Stack영역에 계속  복사된 부분만 새로 할당한다는 것이 맞나요?

만약 그렇다면 메모리에는 별 문제가 없는건가여?

답변 4

3

Rookiss님의 프로필 이미지
Rookiss
지식공유자

중요한건 '복사된 부분이 새로 할당'되는 것은 아닙니다.
바이트 배열 byte[] Array는 여전히 참조값이니
오히려 핀셋처럼 원하는 부분을 찝어주는 형태라고 이해하시면 됩니다.

Array 참조는 동일한 원본을 가리키고 있고,
Offset(시작위치)와 Count(데이터 크기)에 따라 범위를 인식한다고 보시면 됩니다.
사실 C++이었으면 포인터 하나로 (Array + Offset)을 1+1으로 겸할 수 있는데
C#에서는 자유자재로 참조 메모리 주소를 넘나들 수 없으니,
이렇게 별도의 Offset을 이용해서 시작 주소를 판단한 것입니다.



2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 맞습니다!
[Array의 Offset부터 시작하고 크기는 Count이다]는 정보를 이용해
특정 범위를 래핑해서 나타내고 있습니다.

1

BBAKK님의 프로필 이미지
BBAKK
질문자

그림으로 친절하게 설명해주셔서 감사합니다 ^^

Array의 offset을 사용자가 원하는 위치로 재설정해서 특정 범위만 참조할 수 있도록 랩핑해서 반환하는거라고 이해하면 되나요?

0

BBAKK님의 프로필 이미지
BBAKK
질문자

우와 ㅎㅎㅎ 실시간으로 답변을 이렇게 해주시다니 ㅎㅎㅎ

다음 강좌도 질러될거같아요

BBAKK님의 프로필 이미지
BBAKK

작성한 질문수

질문하기