shared-ptr

    6熱度

    5回答

    我有一個線程A分配內存並將其分配給共享指針。然後這個線程產生3個其他線程X,Y和Z,並將共享指針的副本傳遞給每個線程。當X,Y和Z超出範圍時,內存將被釋放。但是有可能2個線程X,Y在相同的時間點超出範圍,並且引用計數存在爭用條件,所以不是將其減少2,而只是減少一次。所以,現在引用計數更新爲0,所以存在內存泄漏。請注意,X,Y和Z只能讀取內存。不寫或重置共享指針。長話短說,參考計數是否會存在競爭條件

    2熱度

    2回答

    就是這麼多。我需要分配內存並將其傳遞給一個帶void *的函數。我想使用shared_ptr,但我不知道該怎麼做。

    6熱度

    3回答

    在boost::shared_ptr析構函數,這樣做是: if(--*pn == 0) { boost::checked_delete(px); delete pn; } 其中pn是一個指針引用計數器,這是通過typedef爲 shared_ptr::count_type -> detail::atomic_count -> long 我本來期望的long是vola

    3熱度

    4回答

    這正在成爲我的代碼中的一種常見模式,因爲當我需要管理一個對象時,它需要是不可複製的,因爲A.它是「重」,或者B.它是一個操作系統資源,比如臨界區: class Resource; class Implementation : public boost::noncopyable { friend class Resource; HANDLE someData; I

    4熱度

    4回答

    我有一個類模型:從CardStack class Model { ... boost::shared_ptr<Deck> _deck; boost::shared_ptr<CardStack> _stack[22]; }; Deck繼承。 我試圖去讓_stack[0]指向同一件事,_deck點: { _deck = boost::shared_pt

    1熱度

    3回答

    我無法讓智能感知自動完成共享指針,用於升級1.40.0。 (它工作正常的升壓1.33.1。)下面是一個簡單的示例項目文件,其中自動完成不工作: #include <boost/shared_ptr.hpp> struct foo { bool func() { return true; }; }; void bar() { boost::shared_ptr<foo> pfoo

    7熱度

    3回答

    考慮以下幾點: class DirectoryIterator; namespace detail { class FileDataProxy; class DirectoryIteratorImpl { friend class DirectoryIterator; friend class FileDataProxy;

    19熱度

    3回答

    using namespace boost; class A {}; class B : public A {}; class X { virtual shared_ptr<A> foo(); }; class Y : public X { virtual shared_ptr<B> foo(); }; 返回類型不是協變的(它們也不合法),但是如果我使用原

    7熱度

    6回答

    因此,我使用boost :: shared_ptr來提供它提供的各種引用計數優點 - 顯然對初學者有引用計數,但也有複製,分配和存儲在STL Containers中的能力。 問題是,如果我將它傳遞給一個「惡意」函數或對象,對象可以保存ptr,然後如果沒有外函數或對象很好地放棄它,我將永遠無法取消它的分配所有權。 最終,我儘量保持對象所有權的明確。我通過讓所有者將唯一的shared_ptr保存到對象

    1熱度

    1回答

    假設我有一個相當大的類Matrix,我已經超負荷operator==檢查平等,像這樣: bool operator==(Matrix &a, Matrix &b); 當然,我通過引用傳遞矩陣對象,因爲它們是如此之大。 現在我有一個方法Matrix::inverse()返回一個新的矩陣對象。現在我想在比較中直接使用反轉,如下所示: if (a.inverse()==b) { ... }` 問