allocator

    17

    1答えて

    C++ 17は、メモリの割り当てと割り当て解除のためのクリーンなインターフェイスである​​を持ってきます。 Allocatorのコンセプトとは異なり、はちょうどです。 std::pmr::polymorphic_allocatorもあります。これは、メモリリソースを古典的なアロケータにラップして、既存のコンテナで使用できるようにします。 C++ 17以降を対象とした新しいコンテナ(または他のメモリ

    4

    3答えて

    最近、C++アロケータの動作を理解しようとしており、STLライブラリがstd::setまたはstd::mapなどの目的で使用する赤黒のツリーの実装を検討しています。しかし、頭がおかしくないことがいくつかあります。 typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<_Rb_tree_node<_Val>

    1

    3答えて

    はあなたが(例えば、小規模な配分のためのカスタムアロケータは一種のstd::stringのように、スタックの代わりに、ヒープからメモリを取得します "std::vectorで使用する最適化されたカスタムアロケータを開発したと仮定たとえば、Windows上でVirtualAllocを使用して大きなチャンクを割り当てた後、ポインタを増やすだけでチャンク内から単一の割り当てが刻まれます)。 typede

    0

    1答えて

    私が知る限り、カスタムメモリマネージャはいくつかの中規模および大規模プロジェクトで使用されています。このrecent answerのsecurity.seは、パフォーマンス上の理由からOpenSSLのカスタムメモリアロケータが含まれており、最終的にHeartbleedの悪用を悪化させたという事実について説明しています。このold threadはメモリアロケータを扱います。特に、mallocが遅いた

    0

    1答えて

    私は実際にSTLのコンテナの実装を記述しようとしていましたが、私の要素の割り当てを解除するのに問題があります。基本的に標準のC++配列のラッパーである単純なArrayクラスを作成しました。私が実装しようとしてきた大きな変化は、デフォルトのコンストラクタがない場合に配列を初期化できることです(私はVectorsがこれを行うことができますが、実装を練習したいと思っています)。この機能のためにnewを使

    4

    1答えて

    アロケータがどのように動作するかを理解しようとしています。しかし、私は、アロケータを受け入れる簡単なコンテナを実装しようとすると問題に遭遇します。今私はこれで終わった場合:それは私にそのエラーを修正する方法エラーmember function 'allocate' not viable: 'this' argument has type 'const allocator_type' (aka 'c

    1

    1答えて

    私はオペレータnewとdeleteをオーバーライドするための個人的なプロジェクトを完了し、プロセス内のアロケータクラスについて学びました。 cppreference.comを含むいくつかのオンラインリファレンスを読んで、私は多くの機能がオプションであると述べています。 私の質問は、どのようにアロケータの受信者ですか? std::set、受け取ったアロケータがオプションで関数と型しか実装していない場

    0

    1答えて

    この質問は組み込みのC++ 11ポインタ型(shared_ptrなど)に限らず、C++で定義され、標準準拠のアロケータの一部としてインクルードされるカスタムポインタ型を含みます。 カスタムアロケータ(std :: allocator_traits <Alloc> :: pointer)によって提供されるような、自明ではないポインタの構築が例外をスローする場合があります。

    2

    1答えて

    私はベクトルのカスタムアロケータを記述しようとしています。これは、これまでのスケルトンコードです: GCC 6.3で #include <iostream> #include <vector> struct Noisy { Noisy() { std::cout << "Default ctor called" << '\n'; } Noisy(const Noisy&