這篇文章不提任何的智慧型指標,看一段**、
示例一:
#include using namespace std;
class test
~test()
};int main()
delete ptr;
}
程式沒有執行到delete就結束了,導致堆上的物件沒有呼叫析構,資源沒有得到正確的釋放。
示例二:
#if 1
#include using namespace std;
class test
~test()
};template class smart_ptr
~smart_ptr()
t *_ptr;
};int main()
}#endif
用類的特性,程式沒有崩,區域性變數在return 函式結束的的時候會呼叫析構函式,而smart_ptr類裡的析構函式呼叫delete釋放資源
delete做了兩件事情
智慧型指標 強弱智慧型指標
在平時編寫 的時候經常會用到new來開闢空間,而我們開闢出來的空間必須得手動去delete他,但是如果程式設計師忘記去手動釋放那邊會出現乙個麻煩的問題,記憶體洩漏!或者是一塊記憶體被多個函式同時使用時,如果其中乙個函式不知道還有其他人也在使用這塊記憶體而釋放掉的話同樣也會引起程式的崩潰。引起記憶體洩...
智慧型指標學習
最近接觸到智慧型指標很多,於是研究了一下智慧型指標的原理,寫下自己的心得體會,有不對的還請指正。智慧型指標產生的目的 因為在c 中,存在非常複雜的指標錯誤問題,例如,某個物件生成後,指向該物件的指標可能有多個,當我們用delete語句刪除其中的乙個指標後,物件就被銷毀,那麼其餘指向該物件的指標就會懸...
智慧型指標3
include include using namespace std define test smartptr class stub class sentry sentry private int lock template class refcountingtraits void unrefer...