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

literate_t님의 프로필 이미지
literate_t

작성한 질문수

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

Reference Counting

난생 처음 보는 동작인데 visual studio2022 버그일려나요. 도저히 이유를 모르겠습니다.

작성

·

72

0

Missile 클래스에서 WraithRef _target = nullptr; 코드를 넣어주면,

GameServer.cpp에서 테스트할 때 MissileRef missile(new Missile()); 이 코드를 타고 들어가면 TSharedPtr(T* ptr) { Set(ptr); } 동작할 때 ptr에 nullptr이 들어옵니다.

Missile 클래스에서 WraithRef _target = nullptr;을 하지 않고 Missile 클래스에서 WraithRef _target; 으로만 작성하면 정상 동작하고요.

저와 같은 증상 겪는 분 없나요?

vs 버전은 17.10.4 입니다.

답변 2

0

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

Missile의 기본 생성자에서 _target = nullptr; 초기화 부분을 실행하기 때문인데요.
혹시 어떤 부분이 문제일까요?

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

답변 감사합니다!

머리가 너무 뜨거운 상태로 코드를 봐서 혼동이 있었던 것 같습니다! 강사님 코드와 조금 다르게 해보면서 실수를 못 찾았던 거였어요. 감사합니다!

0

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

질문해주신 내용을 보니, Missile 클래스에서 WraithRef _target = nullptr; 코드와 관련된 포인터 초기화 문제로 인해 발생하는 것으로 보입니다. C++에서 스마트 포인터를 사용할 때, 종종 포인터의 초기화나 할당과 관련된 이슈가 발생할 수 있습니다.

이 문제는 포인터의 초기 상태 설정이 예상과 다르게 작용할 수 있는 조건을 포함합니다. nullptr로 초기화하는 동작과 단순 선언의 차이가 결과적으로 다르게 나타나는 요구를 알 수 있습니다. 이와 관련된 이전의 유사한 문제와 강사님이 제공하신 답변이 관련되어 있습니다.

다음 링크에서 비슷한 주제로 논의된 과정 및 해결 방법을 확인할 수 있습니다:

위의 게시물에서 강사님께서 스마트 포인터 사용 시 참조 카운트와 초기화에서의 상태 관리에 대해 설명하신 부분이 도움이 될 수 있습니다. 초기화 시점의 상태에 따라 어떠한 문제가 예상될 수 있는지, 그리고 이러한 상태 관리에서의 고려사항들을 확인하시길 권장드립니다.

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

literate_t님의 프로필 이미지
literate_t

작성한 질문수

질문하기