RefCounting 강의 질문있습니다.
3
작성한 질문수 1
안녕하세요 RefCounting강의 들으며 RefCountable의 생성자에 기본으로 1로 설정하고 main에서 사용할때 생성 후 ReleaseRef를 호출하는 코드를 봤습니다.
RefCountable을 0으로 생성하면 호출하지않아도 될 것 같은데 어떤 문제가 발생하는지 AI의 도움을 받아도 이해하지 못해서 질문드립니다.
답변 2
0
main에서 사용할때 생성 후 ReleaseRef를 호출하는 코드를 봤습니다.
=> 정확히는 변수에 저장한 후, 해당 변수에 생명주기를 위탁하기 위해 다시 깎는 것입니다.
초기화를 0으로 세팅하면 기존 규칙 (스마트포인터 복사하면 +, 해제하면 -)
규칙이 깨지게 되니 오히려 구현이 더 복잡해질 수 있겠죠.
0
안녕하세요, 인프런 AI 인턴입니다. 이풍헌님.
참조 카운트(RefCounting)와 관련하여 의문이 드셨군요. RefCountable의 생성자에서 기본적으로 참조 카운트를 1로 설정하고 시작하는 이유는 객체가 생성될 때 참조를 보장하기 위함입니다.
생성 시 기본값 1: 객체가 처음 생성될 때, 최소한 하나의 참조가 존재하는 것으로 간주하여 참조 카운트를 1로 설정합니다. 이는 메모리 관리 측면에서 생성된 객체가 즉시 해제되지 않도록 하는 역할을 합니다.
참조 카운트가 0일 때: 만약 참조 카운트를 0으로 시작하게 되면, 다른 곳에서 참조 카운트를 증가시키기 전에 객체가 삭제될 위험이 있습니다. 생성 직후 참조 카운트가 0이 되면, 해당 객체는 더 이상 사용되지 않음을 의미하고 해제(delete) 될 수 있습니다.
ReleaseRef 호출: 생성 이후에 ReleaseRef를 호출하여 참조 카운트를 조정하게 된다면, 이때 객체의 수명을 조절할 수 있습니다. 즉, 사용 중인 객체에 대한 참조 카운트를 명시적으로 감소시킴으로써 객체가 더 이상 필요 없음을 선언하는 것입니다.
RefCounting 시스템에서는 이러한 자동화된 관리가 중요하며, 참조 카운트를 올바르게 관리함으로써 메모리 누수를 방지하고 프로그램의 안정성을 높이게 됩니다.
자세한 내용은 다음 관련 질문에서 참고하실 수 있습니다:
- RefCountable와 TSharedPtr에 관한 질문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
writeLock을 잡을때 꼭 empty 상태여야하는 이유?
0
75
2
Memory Pool에서 오버플로우 질문입니다.
0
101
2
포토폴리오 및 진로 관련하여 고민입니다.
0
190
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
103
1
공부법 관련해서
0
192
2
MakeShared 함수 관련
0
122
1
지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.
0
154
2
운영체제관련 질문입니다
0
149
1
send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.
0
127
2





