inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스마트 포인터 (smart pointer)

weak_ptr 질문

574

k ch

작성한 질문수 56

0

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

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

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

 

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

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

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

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

c++

답변 1

0

Rookiss

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

0

k ch

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

0

k ch

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

weak_ptr = shared_ptr 대입연산할때

weak refrence count를 늘리고 있던데

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

소스코드와 관련하여 질문드립니다

0

70

1

map 컨테이너의 emplace 함수에 대해

0

115

2

시작이 안되네요...!

0

99

2

EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유

0

127

1

리틀 엔디안 장점 질문합니다.

0

131

1

메모리 창에 주소를 넣었는데 영어 꺠짐

0

125

1

타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.

0

94

2

map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.

1

141

2

hello world 부터 오류 ㅠㅜ

0

190

1

지역변수가 스택? 레지스터

0

132

2

마지막 문제 질문드립니다.

0

165

2

메모리창이 비활성화됩니다.

0

98

1

이중포인터 강좌 부분 질문있습니다.

0

146

1

2를 더하는 이유

0

133

1

메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다

1

111

1

해당 코드는 왜 오류가 날까요?

0

156

1

마지막 문제 질문 있습니다.

0

119

1

강의 마지막부분에 질문이 있습니다.

0

192

2

Field초기화

0

141

1

virtual과 override 차이

0

315

2

3:30 참조자 리턴

0

168

1

map 찾기

0

159

1

프로그램 질문드려요

0

261

1

캐스팅 질문

0

139

1