RAII and Memory Management(2) - boost::weak_ptr
RAII and Memory Management(2) - boost::weak_ptr 예전에 boost::shared_ptr에 대한 글을 작성한 적이 있다. 이때, shared_ptr 내부 변수 중 weak_count에 대한 설명을 작성하려고 구글링했을 때 weak_count에 대한 내용은 없고 죄다 weak_ptr에 대한 이야기를 하고 있어 당황한 적이 있다. 아마 weak_count가 weak_ptr과 관련이 있지 않을까 하는 생각이 들어 shared_ptr다음 바로 weak_ptr을 주제로 포스팅하고자 한다 Weak? weak_ptr도 스마트 포인터의 한 종류이긴 한데 이름에서부터 시름시름 앓는 소리가 들려오는 것 같다. 맞다. weak_ptr은 이를 의도한 스마트 포인터의 한 종류이다. 이를 설명..
2021.11.19
no image
RAII - boost::shared_ptr
RAII and Memory Management(1) - boost::shared_ptr RAII란 Resource Acquisition Is Initialization, '자원 할당은 초기화'의 줄임말이다. 이는 별도의 포스팅으로 다룰 예정이므로 깊게는 얘기하지 않고 짧게 얘기해주자면, 한 번의 선언만으로 번거로운 절차를 거치지 않고 자원 할당 및 반환을 자동으로 할 수 있게 해주는 기법이라고 보면 된다. 이 중 가장 널리 사용되는 boost의 API인 shared_ptr에 대해서 설명하고자 한다. 이는 C++11 표준에 추가되었다. SHARED? 공유 포인터라는 말만 들으면 이게 무슨 소린가 싶다. 포인터는 주소값을 갖고 있고, 그러면 당연히 여러 곳에서 공유할 수 있지 않나? 싶지만 shared_p..
2021.09.25
Data structure - Boost::any
Data Structure (1) - Boost::any Boost::Any는 변수를 익명화하는 API다. 변수가 본래 갖고 있던 자료형을 숨겨주는 기능을 한다고 보면 된다. C++에서 종종 볼 수 있는 제네릭과 매우 유사하며, 런타임 시점에서의 다형성을 보장하기 위한 API이다. 그래서 Any 변수에는 int도 저장할 수 있고, String도 저장할 수 있고, 구조체도 저장할 수 있고, 뭐든지 저장할 수 있다. 이거 완전 자바스크립트 아니냐 하지만 다음의 이유로 그닥 사용을 추천하지는 않는다. 쓰려면 캐스팅 함수를 통해 다시 원래 유형으로 돌려놔야 한다 이때 any에 저장된 변수가 무엇인지 특정하기 위한 검사 과정이 필요하게 된다 C++의 특성상 연산자 오버로딩을 하지 않거나 순수 타입 간에는 자료형을..
2021.09.14