inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스마트 포인터

RefCounting 강의 질문있습니다.

7

이풍헌

작성한 질문수 1

0

안녕하세요 RefCounting강의 들으며 RefCountable의 생성자에 기본으로 1로 설정하고 main에서 사용할때 생성 후 ReleaseRef를 호출하는 코드를 봤습니다.

 

RefCountable을 0으로 생성하면 호출하지않아도 될 것 같은데 어떤 문제가 발생하는지 AI의 도움을 받아도 이해하지 못해서 질문드립니다.

네트워크 MMORPG windows-server

답변 2

0

Rookiss

main에서 사용할때 생성 후 ReleaseRef를 호출하는 코드를 봤습니다.

=> 정확히는 변수에 저장한 후, 해당 변수에 생명주기를 위탁하기 위해 다시 깎는 것입니다.
초기화를 0으로 세팅하면 기존 규칙 (스마트포인터 복사하면 +, 해제하면 -)
규칙이 깨지게 되니 오히려 구현이 더 복잡해질 수 있겠죠.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 이풍헌님.

참조 카운트(RefCounting)와 관련하여 의문이 드셨군요. RefCountable의 생성자에서 기본적으로 참조 카운트를 1로 설정하고 시작하는 이유는 객체가 생성될 때 참조를 보장하기 위함입니다.

  1. 생성 시 기본값 1: 객체가 처음 생성될 때, 최소한 하나의 참조가 존재하는 것으로 간주하여 참조 카운트를 1로 설정합니다. 이는 메모리 관리 측면에서 생성된 객체가 즉시 해제되지 않도록 하는 역할을 합니다.

  2. 참조 카운트가 0일 때: 만약 참조 카운트를 0으로 시작하게 되면, 다른 곳에서 참조 카운트를 증가시키기 전에 객체가 삭제될 위험이 있습니다. 생성 직후 참조 카운트가 0이 되면, 해당 객체는 더 이상 사용되지 않음을 의미하고 해제(delete) 될 수 있습니다.

  3. ReleaseRef 호출: 생성 이후에 ReleaseRef를 호출하여 참조 카운트를 조정하게 된다면, 이때 객체의 수명을 조절할 수 있습니다. 즉, 사용 중인 객체에 대한 참조 카운트를 명시적으로 감소시킴으로써 객체가 더 이상 필요 없음을 선언하는 것입니다.

RefCounting 시스템에서는 이러한 자동화된 관리가 중요하며, 참조 카운트를 올바르게 관리함으로써 메모리 누수를 방지하고 프로그램의 안정성을 높이게 됩니다.

자세한 내용은 다음 관련 질문에서 참고하실 수 있습니다:
- RefCountable와 TSharedPtr에 관한 질문입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

0

75

2

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

0

101

2

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

0

191

1

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

0

106

1

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

0

114

2

성능 테스트 결과

0

123

2

게임 서버 Stateful, Stateless 진로 고민

0

156

1

WaitOnAddress와 Sleep의 차이 질문

0

108

1

궁금한거 있습니다.

0

94

2

JobTimer 구동 스레드

0

120

2

TryPop() 동작 관련 질문

0

89

1

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

0

175

2

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

0

83

1

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

0

99

2

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

0

161

2

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

0

110

2

mutex와 sleep 차이점

0

134

1

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

0

171

2

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

0

104

1

공부법 관련해서

0

192

2

MakeShared 함수 관련

0

123

1

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

0

154

2

운영체제관련 질문입니다

0

149

1

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

0

127

2