1. 程式人生 > >c++ shared_ptr智慧指標使用注意事項

c++ shared_ptr智慧指標使用注意事項

#include <boost/make_shared.hpp> #include <vector> using namespace std; using namespace boost; int main (int argc, const char * argv[]) { typedef vector< shared_ptr<int> > sharedContainers; sharedContainers sharedArray(10); int i=0; for(sharedContainers::iterator pos = sharedArray.begin() ;pos!=sharedArray.end();++pos) { *pos = make_shared<int>(++i); } cout<<"sharedArray[5]的初始值:"<<*sharedArray[5]<<endl; cout<<"sharedArray[5]的初始引用計數為:"<<sharedArray[5].use_count()<<endl; shared_ptr<int> p1 = sharedArray[5]; *p1 = 10; cout<<"sharedArray[5]經過賦值後的值:"<<*sharedArray[5]<<endl; cout<<"sharedArray[5]賦值後的引用計數為:"<<sharedArray[5].use_count()<<endl; shared_ptr<int> p2(sharedArray[5]); cout<<"sharedArray[5]複製和賦值後的引用計數為:"<<sharedArray[5].use_count()<<endl; cout<<"sharedArray[5]的地址:"<<sharedArray[5]<<",p1的地址:"<<p1<<",p2的地址:"<<p2<<endl; *p2 = 5; cout<<"sharedArray[5]經過複製後的值:"<<*sharedArray[5]<<endl; return 0; }