• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

shared_ptr 질문

21.08.29 20:33 작성 조회수 168

1

강의 23분 35초~40초경.

해당 코드에서 k2는 지역을 벗어나서 삭제될 예정인데,  shared_ptr로 인해 k2 자체는 삭제되지 않고 대기를 하고 있는것으로 알고 있습니다.

그런데 이렇게 shared_ptr로 사용했을때, 프로그래머의 의도는 k2가 삭제되어서 더이상 사용되지 않기를 바랐기에, k2의 hp, mp 등등의 데이터를 접근하지 않기를 바랐는데,

k1에서 실수로 프로그래머가 Attack이라거나, k1변수를 통해서 (데이터는 살아있지만) 죽어버린 k2에 접근하는것 자체가 문제가 되지 않나요?

중간 과정에 k2가 죽어있는 객체인지 체크하는 조건문 정도 추가하면 해결될것 같은데 제 생각이 오류가 있나 싶어서 질문 남깁니다.

(dangling pointer 문제는 해결했다는 장점은 있으나 여전히 프로그래머가 신경써줘야하는 부분이 있는것 같습니다)

답변 1

답변을 작성해보세요.

1

네 맞습니다.
그런 부분이 신경쓰이거나 문제가 된다면 weak_ptr로 가거나,
같은 지역에 있는지 등을 한 번 더 확인해볼 필요가 있습니다.
다만 멀티쓰레드 환경이라고 해서 컨텐츠도 그렇게 주구난방 멀티쓰레드로 가진 않습니다.
나중에 게임서버 시간에 다루는 Job 방식으로 가면,
어느 정도 컨텐츠 일감들 순서가 보장되기 때문에
생각보다 shared_ptr로 인한 극단적인 상황은 잘 발생하지 않습니다.