일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- stl
- BFS
- C++
- unorder_map
- 알고리즘
- 언리얼가비지컬렉터
- 언리얼엔진구조체
- UE_LOG
- 데이터애셋
- 람다
- dataasset
- 크리티컬섹션
- 정렬
- moreeffectiveC++
- C++최적화
- enumasByue
- UE4 커스텀로그
- 자료구조
- 정렬알고리즘
- 델리게이트
- 약참조
- 스마트포인터
- 애셋로드
- UELOG
- 프로그래머스
- 강참조
- UML관련
- 람다사용정렬
- 선택정렬
- map
- Today
- Total
목록스마트포인터 (4)
기억을 위한 기록들
이전에 일반 C++에서의 스마트포인터에 대해 다뤄보았다. hyo-ue4study.tistory.com/247?category=862971 [CPP]스마트(Smart) 포인터에 관하여(1) - unique_ptr 스마트 포인터는 3가지가 있다. - unique_ptr (유니크) - shared_ptr (쉐어드) - weak_ptr (위크) 우선 일반 포인터를 보면 //... int main() { Vector* myVector = new Vector(10.f, 30.f); //... delete myVecto.. hyo-ue4study.tistory.com 이번엔 언리얼엔진에서 스마트포인터를 다뤄보자. 우선 간단하게 게임 인스턴스 클래스를 만들고, 임의의 클래스(House)(언리얼엔진에서 일반클래스 접두사..
이전에 공유 포인터의 서로 공유하면서 해제되지 않는 순환 참조가 발생하면서, 그것을 해결해주게 도와주는것이 weakptr 약한 포인터이다. 약한 포인터에는 공유 포인터의 강한참조외에 약한 참조가 존재하는데, 약한참조란? - 원시 포인터 해제에 영향을 끼치지 않음. - 약한 참조 카운트는 약한 참조의 수를 저장하는데 사용. - 약한 참조로 참조되는 개체는 강한 참조 카운트가 0이 될때, 소멸됨. - 순환 참조 문제의 해결책 * 공유 포인터에서부터 약한 포인터를 만든다. #include #include "Person.h" int main() { std::shared_ptr owner = std::make_shared("LaLa"); //강한참조 std::weak_ptr weakOwner = owner; //..
shared_ptr 공유포인터로 이전에 유니크 포인터와 달리 원시포인터를 독차지 하지 않고 여럿이서 공유 할 수있다. 몇명(?)이서 공유하는지 확인하기 위해 참조카운팅 기반으로 작동이 된다. 참조 카운팅이란 이전에 작성한 글이 있다. 사용예를 보면, #include #include "myVector.h" int main() { std::shared_ptr vector01 = std::make_shared(10.f, 30.f); // ... } 위와같이 생성하면 1 강한 참조 (1 strong ref)가 표시되는걸 확인할 수 있다. shared_ptr 내부 - 두개의 포인터를 소유 1. 데이터(원시 포인터)를 가리키는 포인터 2. 제어 블록을 가리키는 포인터(참조카운팅용) - 유니크 포인터와 달리 shar..
스마트 포인터는 3가지가 있다. - unique_ptr (유니크) - shared_ptr (쉐어드) - weak_ptr (위크) 우선 일반 포인터를 보면 //... int main() { Vector* myVector = new Vector(10.f, 30.f); //... delete myVector; return 0; } 이런식으로 delete를 해줘야 한다. 그러나 //... int main() { Vector* myVector = new Vector(10.f, 30.f); if(true) { return 0; //early return } delete myVector; return 0; } 중간에 끝나버리거나(try catch와 같은), delete을 잊으면 메모리 누수(memory leak)가 ..