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

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

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


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

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



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

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


C++:auto_ptr+前向聲明?

我有這樣的一個班級: class Inner; class Cont{public: Cont(); virtual ~Cont(); private: Inner* m_inner;}; 在.cpp中,構造函數使用new創建Inner一個實例,而析構函數則delete它。 這工作得很好。 現在我想改變這個代碼來使用auto_ptr所以我寫: class In…


c++ - shared_ptr在哪裡?

幾個小時後,我非常沮喪地試圖找到shared_ptr所在的位置。 我看到的例子都沒有顯示包含shared_ptr(和working)頭文件的完整代碼。 簡單地說std,tr1和<memory>根本沒有幫助! 我已經下載了提升和所有,但它仍然不顯示! 有人可以幫助我確切地知道在哪裡找到它嗎? 感謝讓我發洩我的挫折! 編輯:我看到我的標題已被更改。 對於那個很抱歉。 所以......這也是因…


c++ - unique_ptr提升等價?

在boost庫中是否有一些與C++ 1x的std:: unique_ptr等效的類? 我正在尋找的行為是能夠擁有異常安全的工廠功能,就像這樣...... std::unique_ptr<Base> create_base(){return std::unique_ptr<Base>(new Derived);}void some_other_function(){…


c++ - std:: auto_ptr到std:: unique_ptr

隨著新標準的到來(以及某些編譯器中已有的部分),新類型std::unique_ptr應該是std::auto_ptr的替代品。 他們的用法是否完全重疊(所以我可以在我的代碼上進行全局查找/替換(不是我會這樣做,但是如果我這樣做)),還是應該知道讀取文檔時不明顯的一些差異? 此外,如果它是一個直接替換(為什麼給它一個新名稱),而不是僅僅改善std::auto_ptr 。…


c++ - 從函數返回unique_ptr

unique_ptr<T>不允許複製構造,而是支持移動語義。 然而,我可以從一個函數返回一個unique_ptr<T>並將返回的值賦給一個變量。#include<iostream>#include<memory> using namespace std; unique_ptr<int> foo(){unique_ptr<int> p( new int(10)); re…


c++ - 我應該通過引用傳遞shared_ptr嗎?

這個問題在這裡已經有了答案: 我們應該通過引用還是通過值來傳遞shared_ptr? 8個答案 傳遞shared_ptr的最佳做法是什麼? 目前我傳遞shared_ptr函數參數,如下所示: void function1( shared_ptr<TYPE>& value);…


c++ - 為什麼沒有std:: shared_ptr<T[]>專門化?

該標準提供了std::unique_ptr的模板特化,它正確地從析構函數中調用delete[]:void func(){std::unique_ptr< int[]>arr(new int[10]);.......}使用std::shared_ptr這個特化是不可用的,所以有必要提供一個正確調用delete[]:void func(){// Usa…




unique_ptr shared_ptr delete pointer reset smart get usage make_shared unique_ptr用法