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

k ch님의 프로필 이미지
k ch

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

스마트 포인터 (smart pointer)

weak_ptr 질문

작성

·

509

·

수정됨

0

weak_ptr은 래퍼런스 카운트를 증가시키지 않는 포인터로 알고 있는데요

강의 내용에는 week_ptr도 래퍼런스 카운트가 있는것처럼 강의 해주셔서 햇갈리네요..

존재하긴하나 증가 시키지만 않는건가요???

 

week_ptr은 래퍼런스 카운트를 증가시키지않는 약한(?) 포인터로 가리키고 있다가

가리키고 있는 메모리가 유효한지 확인하기 위해 shared_ptr로 접근해보고

유효한지 아닌지 판단한다고 알고있습니다 어떤게 맞는걸까요??

 제가 틀리게 알고있던걸까요?? 오래돼서 했갈립니다 ㅠㅠ

답변 1

0

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

refCount에는 2가지 종류가 있는데
[객체의 생명을 관리하는 refCount]와 [refCount을 관리하는 수치를 담는 메모리 블록을 관리하는 refCount]
이 중 weak_ptr는 후자에 영향을 주지만 전자에는 영향을 주지 않습니다.
마지막으로 이 부분은 직접 F12로 타고 들어가서 코드를 살펴보면 알 수 있습니다.

k ch님의 프로필 이미지
k ch
질문자

감사합니다 말씀 주신 단서로 한번찾아보겠습니다!!

k ch님의 프로필 이미지
k ch
질문자

  void _Incwref() noexcept { // increment weak reference count
        _MT_INCR(_Weaks);
    }

weak_ptr = shared_ptr 대입연산할때

weak refrence count를 늘리고 있던데

실제로 어디에쓰이는지 확인해보려했는데 어디에 쓰이고있는질 모르겠습니다..
이걸 [refCount을 관리하는 수치를 담는 메모리 블록을 관리하는 refCount] 로 이해하면 될까요??

k ch님의 프로필 이미지
k ch

작성한 질문수

질문하기