c++ - 什麼是智能指針,我應該什麼時候使用它?

c++ - 什麼是智能指針,我應該什麼時候使用它?

什麼是智能指針,我應該什麼時候使用它?…


c++ - 習慣用std:: auto_ptr還是只使用shared_ptr?

現在shared_ptr在tr1中,你認為使用std::auto_ptr怎樣? 它們都有不同的用例,但是auto_ptr所有用例也可以用shared_ptr來解決。 你會放棄auto_ptr或繼續使用它的情況下,你想明確表示只有一個類擁有所有權在任何給定的點? 我的看法是,使用auto_ptr可以增加代碼的清晰度,正好通過添加細微差別和代碼設計的指示,但另一方面,在培養新的程序員時又增加了一個微…


c++ - std:: auto_ptr或boost:: shared_ptr的pImpl成語?

當使用pImpl習語時,最好使用boost:shared_ptr而不是std::auto_ptr ? 我確信我曾經讀過升壓版本更友好? class Foo{public: Foo(); private: struct impl; std::auto_ptr<impl> impl_;}; class Foo{public: Foo(); private:…


c++ - 在模塊(exes和dll)之間使用STL(TR1)shared_ptr是否安全?

我知道在一個模塊中新建一個模塊並在另一個模塊中刪除它往往會導致VC++中的問題。 不同運行時間的問題。 混合使用靜態鏈接的運行時和/或動態鏈接的版本不匹配的模塊都可以把事情搞砸了,如果我沒有記錯的話。 但是,跨模塊使用VC++ 2008的std:: tr1:: shared_ptr是否安全? 由於只有一個版本的運行時甚至知道什麼是shared_ptr,靜態鏈接是我唯一的危險(現在..…


c++ - 智能指針+“這個”被認為是有害的?

在使用智能指針(如boost::shared_ptr的C++項目中,使用“ this ”的設計理念是什麼? 考慮到: 存儲任何智能指針中包含的原始指針供以後使用是很危險的。 你已經放棄了對象刪除的控制,並相信智能指針在正確的時間做到這一點。 非靜態類成員本質上使用this指針。 這是一個原始指針,不能改變。 如果我將它存儲在另一個變量中,或者將它傳遞給另一個可能存儲它的函數,或者將它綁定…


C++使用scoped_ptr作為成員變量

只是想在設計問題上的意見。 如果你有一個C++類比擁有其他對象,你會使用智能指針來實現這個? class Example{public://... private: boost::scoped_ptr<Owned> data;}; “擁有”對像不能按值存儲,因為它可能會在對象的生命週期中改變。 我的觀點是,一方面,你清楚地表明了對像是擁有的,並確保它被刪除,但是在另…



c++ - 從shared_ptr獲得正常的ptr?

我有類似shared_ptr<Type> t(makeSomething(), mem_fun(&Type::deleteMe))我現在需要調用需要指向Type的指針的C樣式函數。 我如何從shared_ptr獲取它?…


c++ - 如何故意刪除boost:: shared_ptr?

我有很多boost::shared_ptr<MyClass>對象,並且在某些時候我故意想要delete其中的一些以釋放一些內存。(我知道那時我將永遠不再需要指向的MyClass對象。)我該怎麼做? 我想你不能只用我用get()得到的原始指針調用delete() get() 。 我在boost::shared_ptr看到了一個函數get_deleter(shared_ptr<T> const…


c++ - 引用計數智能指針的引用計數如何工作?

換句話說,實現如何跟踪計數? 是否存在一個類似於映射的對象,所有shared_ptr實例都可以訪問它們,其key是指針的地址,value是引用的數量? 如果我要實現一個shared_ptr,這是我想到的第一個想法。 在這些引用計數智能指針的情況下是否存在內存洩漏的可能性? 如果是這樣,我該如何避免它們?…


c++ - 在dll-interfaces中使用shared_ptr

我的dll中有一個抽像類。 class IBase{protected: virtual ~IBase()=0; public: virtual void f()=0;}; 我想在加載DLL的exe文件中獲取IBase 。 第一種方法是創建以下功能 IBase*CreateInterface(); 並在IBase添加虛函數Release…




shared_ptr unique_ptr delete reset pointer example make_shared weak_ptr smart new