allocator

    3熱度

    1回答

    我想在boost :: interprocess :: managed_shared_memory段創建一個boost :: unordered_map。這工作正常,直到我試圖改變使用boost :: interprocess :: allocator boost :: interprocess :: cached_node_allocator。 似乎hash_bucket結構推遲了密鑰大小計算,

    -1熱度

    1回答

    我有一些代碼,我正在改裝,直接使用allocator而不是operator new和operator delete。這段代碼的公共接口的一部分是有來無回禿指針,但一個shared_ptr(正在從禿指針走出了徘徊的new構建。) 我在名爲pointer,const_reference分配器幾種類型定義公共合同看,等等。這個想法不是直接引用類型T *,我可以使用pointer,允許分配者作者使用除C指

    0熱度

    1回答

    創建自定義內存分配器像以下: class pool_allocator { // required methods // ... private: boost::shared_ptr<MemoryChunks> m_t; }; 這個分配器的目的是共享存儲器由不同的容器中分配,僅解除分配它們當所有容器和刪除。因此,我使用boost::shared_ptr。 但

    3熱度

    1回答

    是否有必要爲使用任意分配器分配的基元類型的數組調用allocator.construct(),如下面的代碼清單所示?這個類不需要將分配的內存初始化爲任何特定的值,因此在我看來,調用allocator.construct()和新分配的內存塊將是不必要的。假設數組總是由基本類型組成,那麼不調用此方法是否有任何危險? template <class T, template <class> class A

    3熱度

    3回答

    在下面的代碼中是函數make_vector()。它創建一個向量並將其返回給調用者。我希望能夠指定要使用的矢量的分配器,但默認情況下使用默認的std :: allocator。這是因爲在某些情況下,默認分配器是我需要的,但有時我需要從一些預定義的內存池中分配。 我最近來的是make_vector2()函數模板。它適用於std :: allocator,但我不知道如何將「競技場」參數傳遞給我的自定義分

    6熱度

    2回答

    在C++ 11中,std :: vector具有構造函數vector(size_type n),它將默認構造n項目,它可以與缺省的可構造,可移動,不可複製的類一起使用。 然而,與所有其他載體的構造,沒有變種,需要一個allocator,我已經使出了以下內容: // Foo is default constructible and moveable, but not copyable const

    1熱度

    1回答

    所有 我有一個意圖寫的是一個代理其他分配器能夠例如收集分配統計信息或任何其他爲我定製的分配器代碼 template<int Id, class T, class BaseAlloc> class SelfTracingAllocator : public BaseAlloc { typedef AllocationStatistics<Id> StatsType; public

    3熱度

    2回答

    我對一些基本的字符串實現有點困惑。我一直在通過消息來源瞭解內心的工作並學習新事物。我不能完全掌握內存如何管理。 從基本字符串實現 原始分配器只是一些小花絮是char類型 typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc; ...然後在分配代表被放置在分配的緩衝區__size內計算也適合字符 size_t

    4熱度

    1回答

    假設我有一個叫vector類維護由std::allocator<T>.現在分配T型的一些內部,動態數組,我構建U類型的vector,後來又希望使用移動語義,這樣我可以使用由它佔用的內存爲T型vector,像這樣: vector<unsigned> u(512); // Do something with v. vector<double> t = std::move(u); // Do so

    0熱度

    2回答

    是否有一個方便的std::bitset<>模擬,它在實例化時可動態調整大小,但避免了boost::dynamic_bitset<>所需的額外分配 你可以通過做類似的事情在C中輕鬆創建動態大小的位集: typedef struct { node_t node; block_t bits[0]; } node_bitset_t; p = (node_bitset_t *)malloc((sizeof