auto_ptr是c++標準庫里的所謂智慧型指標。是用來防止記憶體洩漏的一種方式。
它不允許多個指標指向同一塊記憶體,而且能在方法返回時自動釋放所指的記憶體。這樣即使在程式因為異常退出時也能釋放掉所占用的資源,不用造成記憶體洩漏。
std::auto_ptrptr(new classa);
auto_ptr和普通的指標的用法一樣,*是取值,->用來訪問成員,但是它沒有提供指標的數值運算,比如++。而且也不允許通過將普通物件的指標賦值給它來初始化。如:
std::auto_ptrptr1(new classa);
//ok
std::auto_ptrptr2= new calssa;
//error
第二個就是非法的,因為auto_ptr不能指向普通指標,只能指向auto_ptr型別。
auto_ptrashape(new shape);
auto_ptracircle(new circle);
ashape=acircle;
auto_ptr採用控制權移交機制,當acircle賦值給ashape時,如果ashape是空的,無論ashape是什麼東西都將被delete掉, 被代之以acircle所指向的東西,acircle被設定為空。
1.auto_ptr不能共享擁有權。
2.不能用於陣列,因為它的析構函式不能呼叫delete.
3.它不是萬能的智慧型指標,比如它不能用來計數,而share_ptr是幹這個的,它允許共享擁有權,會在引用計數為0時自動刪除物件。
4.auto_ptr不能作為容器中的element使用。
有效運用auto ptr
翻譯 elmar 本文發表於1999年10月份的c c users journal,17 10 很多人聽說過標準auto ptr智慧型指標機制,但並不是每個人都天天使用它。這真是個遺憾,因為auto ptr優雅地解決了c 設計和編碼中常見的問題,正確地使用它可以生成健壯的 本文闡述了如何正確運用au...
有效運用auto ptr
翻譯 elmar 本文發表於1999年10月份的c c users journal,17 10 很多人聽說過標準auto ptr智慧型指標機制,但並不是每個人都天天使用它。這真是個遺憾,因為auto ptr優雅地解決了c 設計和編碼中常見的問題,正確地使用它可以生成健壯的 本文闡述了如何正確運用au...
AUTO PTR使用總結
標準auto ptr智慧型指標機制很多人都知道,但很少使用它。這真是個遺憾,因為auto ptr優雅地解決了c 設計和編碼中常見的問題,正確地使用它可以生成健壯的 本文闡述了如何正確運用auto ptr來讓你的 更加安全 以及如何避免對auto ptr危險但常見的誤用,這些誤用會引發間斷性發作 難以...