shared-ptr

    3熱度

    1回答

    我對shared_ptr感到困惑,而我的主要問題是:C++是否會在我執行以下操作時創建一個新對象(shared_ptr對象)? void Func1(const shared_ptr<T>& rhs) {} void Func2(const shared_ptr<const T>& rhs) {} shared_ptr<T> v1; Func1(v1); Func2(v1); 顯然,F

    0熱度

    1回答

    我正在使用libmodbus庫。我需要在線程之間傳遞modbus_t指針的實例。我有隻是原始指針的困難,我想我可以解決與自定義刪除使用boost_shared_ptr的問題。 我沒有得到任何編譯器問題,但是當我運行程序時它崩潰了。 我希望如果有人能給我一個使用自定義刪除提升共享指針的例子。 程序在m_mb.reset()在OpenModBusConnection()函數中第一次被調用的行崩潰。 m

    1熱度

    1回答

    返回此我已使用該: struct Bar; struct Foo { virtual Bar * GetBar() { return nullptr; } } struct Bar : public Foo { virtual Bar * GetBar() { return this; } } Foo * b = new Bar(); //... b->

    4熱度

    1回答

    在高級STL系列的一個episode(35:00)中,Stephan T Lavavej顯示_Weaks,其值爲0的計數器決定何時刪除_Ref_count結構,等於活着的數量weak_ptr,如果還有活着shared_ptrs加1。他解釋說,這是必要的,因爲線程安全:如果_Weaks僅等於weak_ptr的數量,則當最後的weak_ptr超出範圍時,還需要檢查_Uses(活動shared_ptr

    10熱度

    1回答

    從cppreference: 在C++ 11和C++ 14它是有效的構造std::shared_ptr<T>從 一個std::unique_ptr<T[]>: std::unique_ptr<int[]> arr(new int[1]); std::shared_ptr<int> ptr(std::move(arr)); 由於shared_ptr獲得其刪除器(一個 std::default_

    1熱度

    1回答

    我想通過自己來實現共享PTR模板類。 原型爲混疊的shared_ptr構造是 template< class Y > shared_ptr(const shared_ptr<Y>& r, element_type *ptr); 我已經實現轉換構造如下, shared_ptr<T>::shared_ptr(const shared_ptr<U> &p_ownershipObj,T* p_man

    -1熱度

    1回答

    我只是在C++ 11中編寫了一些小代碼,並且遇到了我無法理解輸出的情況。 對於下面的代碼構造函數只會調用一次而析構函數被多次調用。如果我將刪除[] p與刪除p它的行爲正確,但爲什麼刪除[] p是給這種輸出? #include <iostream> #include <memory> class MyClass{ public: MyClass(){std::cout<<"Cons

    0熱度

    2回答

    我使用共享指針自定義的矢量對象如下: std::vector<std::shared_ptr<Thing>> Things; void Foo() { std::shared_ptr<Thing> newThing(std::make_shared<Thing>()); //do something with newThing Things.push_back(n

    1熱度

    1回答

    如果我的代碼: - class B; //some B.h has definition of B std::make_unique<B>(); ReSharper的會警告我說,我應該包括B.h。 (正確) 類型 'B' 是不完整的 但是,如果我試圖模仿std::unique_ptr<T>代碼,並把它裏面Test.h: - Test.h //inside class Test templa

    10熱度

    1回答

    我們最近在使用自定義刪除器從unique_ptr移動到shared_ptr時遇到了崩潰。當用於創建智能指針的指針爲空時發生崩潰。下面是重現問題的代碼,並顯示了兩種可行的案例。 在下面的源代碼中,One和Two愉快地運行,而在「ReleaseDestroy」中發生三次崩潰。當智能指針中使用的類具有虛擬「發佈」並且程序嘗試查找V-表時,崩潰似乎正在發生。 unique_ptr看起來像它檢查空指針並且不