여기서 부터는 내용이 어려워 진다.
준비할게 있는데 boost 라이브러리
전 우분투가 있어서 sudo apt-get install libboost-dev libboost-doc 요것만 하면 알아서 install 우분투 짱임
shared_ptr 에 대해 알아야 한다. auto_ptr 도 있는데 shared_ptr 에 익숙해 져야 한다.
이게 boost 라이브러리에 서 사용하는 클래스이다.
일단 shared_ptr 에 대해 익숙해 져야 한다.
자세한 사용법은 네이버에서 검색해서 스터디 하시고
shared_ptr 사용시 주의 해야 될 점...
class A
{
public:
A() {
std::cout<<"construct test"<<std::endl;
}
~A() {
std::cout<<"destroy test"<<std::endl;
}
boost::shared_ptr<A> test()
{
boost::shared_ptr<A> pFromThis(this);
std::cout<<pFromThis.use_count()<<std::endl;
return pFromThis;
}
};
int main()
{
boost::shared_ptr<A> p(new A);
boost::shared_ptr<A> p2 = p->test();
std::cout<<p.use_count()<<std::endl;
return 0;
}
결과
construct test
1
1
destroy test
destroy test
*** glibc detected *** ./shared_ptr2: double free or corruption (fasttop): 0x08cf9008 ***