C++11中智慧指標的使用
阿新 • • 發佈:2018-12-19
1.C++11中新增了三種智慧指標,在初始化指標後,如果類被析構,那指標所指向的物件會被自動析構,方便了程式設計師對指標的控制。
share_ptr:共享的智慧指標
weak_ptr:配合share_ptr使用的弱指標
unique_ptr:獨佔的智慧指標
2.智慧指標用於動態陣列的管理
2.1 unique_ptr管理動態陣列
unique_ptr<int[]> up(new int [10]);
up.release();//自動呼叫delete[]銷燬其指標
2.2 share_ptr可用於管理動態陣列,但必須提供自己的刪除器
如:shared_ptr<int> sp(new int[10],[](int *p){delete[] p;})
2.3 new 和delete配對使用管理陣列
int *pia= new int [10];
int *pia= new int [10]{0,12,54,12254,int (10)};
delete []pia;
2.4 使用allocator來構造陣列指標
智慧指標雖然方便,但沒有將構造和分配記憶體分離,可通過allocator進行陣列的分配和銷燬
例:allocator<int> a;//定義一個名為a的allocator物件,它可以為型別為int的物件分配記憶體。 auto p = a.allocate(10);//分配一段元素的未構造的記憶體 auto q=p;//指向最後構造基函式之後的位置 a.construct(q++,10, 1);//,構造操作,q為1111111111 while(q!=p) a.destroy(--q);//釋放真正構造的Int記憶體 a.deallocate(p,n);//釋放陣列記憶體,還給系統