allocator

    0熱度

    1回答

    我需要使用給定的內存區域作爲循環緩衝區。在我的嵌入式系統中,我得到了一個指針和允許使用的內存區域的大小。我想使用boost :: circular_buffer類,但我需要一個自定義分配器。我從來沒有創建分配器。任何人都可以指向一些處理已分配內存的分配器代碼示例嗎?

    4熱度

    1回答

    我正在編寫一個分配器集合,目的是要在非常高性能的環境中使用它們,所以有一點限制用法(由編譯器調解,而不是運行時錯誤)是可取的。我一直在閱讀有狀態分配器的C++ 11語義以及它們如何期望被符合容器使用。 我粘貼了一個簡單的分配器,它下面只包含分配器對象內的一塊內存。在C++ 03中,這是非法的。 template <typename T, unsigned N> class internal_al

    6熱度

    1回答

    我注意到分配器只能分配T類型的對象,並保留大小爲n * sizeof(T)的內存塊。但是,std::list<T>類型中的鏈接列表節點不一定是T類型的對象,也不一定與T對象的大小相同。在這種情況下,std::list如何使用std::allocator分配內存?

    0熱度

    1回答

    我試圖用boost::fast_pool_allocator代替標準分配器,它不會工作(具有諷刺意味的是與另一個boost庫),因爲fast_pool_allocator甚至有多個模板參數儘管它聲稱與std::allocator兼容,除第一個以外的所有內容都有默認值。 我想通過它作爲一個類模板,期望單個模板參數。具體的錯誤: error: type/value mismatch at argume

    3熱度

    1回答

    當使用std::allocator時,deallocate函數需要一個pointer參數和一個size_type參數(std::allocator<>::deallocate(std::allocator<>::pointer p, std::allocator<>::size_type)。但是,size_type不被使用,也不是可選的。那麼它爲什麼存在?它真的讓我困惑,因爲它應該是可選的,甚至是

    20熱度

    2回答

    在C++ 11標準中,我們在動態內存管理庫中有std::scoped_allocator_adapter。這個類最重要的用例是什麼?

    2熱度

    2回答

    This open-std document表明std :: function支持一個自定義分配器,但是我無法在互聯網上找到任何東西,或者找不到如何提供該自定義分配器的東西。 我的研究傾向於讓我相信自定義分配器是在boost::function中實現的,但是尚未達到std::function。 所以問題是std::function支持在C + + 11自定義分配器?如果不是,它最有可能支持C++

    1熱度

    2回答

    我認爲容器必須重新分配給他們的分配器,但是在帶有LLVM(我猜是libC++的一部分)的STL中,似乎並不是這種情況。這是LLVM中的錯誤,還是標準不需要重新綁定? 下面的代碼片段與GCC的STL一樣按預期工作。它伴隨着3.3版的STL(來自Mac上的MacPorts)而失敗。它在Linux上用clang編譯得很好,但我認爲它使用與GCC相同的STL。 #include <vector> in

    8熱度

    2回答

    在我的C++ 11程序中,我使用shared_ptr<T>來處理一些被主動創建和刪除的對象。恰巧operator new的標準分配器是一個瓶頸,所以我想創建一個自己的分配器,它將一次分配一堆內存,然後根據需要分配給make_shared。可惜的是,這是我第一次寫一個allocator,我不知道爲什麼GCC無法編譯下面的代碼: #include <memory> class MyAlloc {

    0熱度

    2回答

    我無法使用calloc創建字符串數組。我不確定數組是否未被創建。程序崩潰時,我嘗試設置字符串值: using namespace std; int main(void){ int counts; string* strs; cout<<"Enter a number: "; cin>>counts; cout<<endl; str