問題タブ [allocator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
84 参照

c++ - 連想コンテナ-デフォルトではなく例外-C++で構築

私はC++で連想コンテナを探しています。そこでは、要素がデフォルトで構築可能である必要はなく、見つからないキーが要求された場合に例外がスローされます-編集:適切な関数で、明らかにすべてではありませんdefault-constructionが必要です。これは基本的に、標準アロケータを自宅に電話してマスターオブジェクトに割り当てられているメモリ量を通知するアロケータに置き換えているためです。したがって、「自宅」がどこにあるかを知る必要があります。

0 投票する
3 に答える
6173 参照

multithreading - OpenMP使用時のメモリリーク

以下のテストケースでは、OpenMPを使用した場合の「postMT section」メッセージに続くループで、32ビットマシン(std :: bad_allocをスロー)のメモリが不足していますが、OpenMPの#pragmasがコメントアウトされている場合、コードは実行されます。正常に完了するまで、メモリが並列スレッドで割り当てられている場合、メモリが正しく解放されず、メモリが不足しているように見えます。

問題は、以下のメモリ割り当てと削除コードに何か問題があるのか​​、それともgccv4.2.2またはOpenMPのバグなのかということです。gcc v4.3も試しましたが、同じ失敗になりました。

0 投票する
5 に答える
1816 参照

c++ - std::vector の 2 番目の引数

vectorを見て、ベクトルを作成するときに 2 番目の引数を使用したことがないことに気付きました。

上記のリンクを見ると、次の目的であると書かれています。

新しいアロケーター オブジェクトを作成する代わりに使用するアロケーター オブジェクト。

または、これに関しては:

アロケーター: ストレージ割り当てモデルの定義に使用されるアロケーター オブジェクトのタイプ。デフォルトでは、型 T のアロケータ クラス テンプレートが使用されます。これは、最も単純なメモリ割り当てモデルを定義し、値に依存しません。

メモリ管理と関係があると思います。ただし、それを使用する方法がわかりません。

これに関する指針はありますか?

0 投票する
1 に答える
417 参照

c++ - new をオーバーライドするが unordered_map にそれを使用しないように指示する

私はプログラミングの練習として C/C++ のガベージ コレクターを書いていますnew。ただし、ガベージ コレクターはunordered_map(割り当てられたブロックへのポインターを格納するために) も使用し、マップがオーバーライドされた new を使用しようとすると、事態は深刻に混乱します (無限にループしようとします)。それを作成するために、オーバーライドされた new の呼び出しを避けるために、placement new を使用したいと考えました。

(mem_t は私が定義した構造体ですが、関連があるとは思いません。) 実行すると、このコードは unordered_map コンストラクター内でセグメンテーション違反を起こします。プレースメント new を使用すれば問題は解決すると思いましたが、どうやらそうではないようです。unordered_map が内部で new を呼び出していることは確かです。アロケータを与えると (どうすればいいですか?)、この問題は解決しますか? そうでない場合、この問題は修正可能ですか?

0 投票する
2 に答える
4234 参照

c++ - allocator_traitsの目的は何ですかC ++ 0xで?

C++0xで使用されるアロケータのメンバータイプを照会するための標準のC++03インターフェイスがないのはなぜですか?メンバータイプが十分でないユースケースは何ですか?

0 投票する
2 に答える
649 参照

c++ - アロケーターをどのように宣言しますか?

クラスとメモリ管理についてもう少し練習するために、cpp に組み込みのベクトル クラスを再作成しようとしています。「ISO C++ はタイプのない 'アロケータ' の宣言を禁止しています」というエラーが表示され続けますが、その理由は一生わかりません。足りないものはありますか?

0 投票する
2 に答える
1524 参照

c++ - c++ での stl::map のアロケータとデアロケータのオーバーロード

c++でstl::mapのアロケータ/デアロケータをオーバーロードすることは可能ですか? はいの場合、どのように?どんな助けでも大歓迎です。

0 投票する
1 に答える
879 参照

c++ - デフォルトのテンプレートテンプレートパラメータの構文

リストのようなテンプレートクラスsll(単一リンクリスト)を作成しました。今、私はそれにアロケータをプラグインしようとしています。デフォルトのアロケータであるアロケータと、プールベースのアロケータであるpool_allocatorがあります。これらはSTLアロケーターインターフェイスの後に設計されていますが、アロケーターが処理する要素の数(max_size)をテンプレートパラメーターとして追加する必要があります。それで、私は次のことをしました。

クライアントが使用する場合は、次の2種類をサポートしたいと思います。

私が抱えている問題は、sllテンプレートクラスでデフォルトのアロケータを指定することです。当初私は持っていた

それは機能しますが、問題は、ユーザーがアロケータの容量を指定できないことです。

私は試した

しかし、私はエラーを受け取ります:

他のいくつかの組み合わせを試しましたが、どれもうまくいきませんでした。この時点で、私はアイデアがなく、SOコミュニティからの助けを求めています。任意の提案やポインタをいただければ幸いです。

0 投票する
1 に答える
1369 参照

c++ - C++ : "std::uninitialized_copy" への呼び出しが機能しないのはなぜですか?

std::string クラスの機能を模倣することになっている単純なクラスを作成します (演習として!):

"new" に関連するオーバーヘッドを回避する (そして<memory>ヘッダーに慣れるため) ために、ライブラリのアロケーター テンプレート クラスを使用して文字列にメモリを割り当てることにしました。コピー コンストラクターでの使用例を次に示します。

コンパイラは、「uninitialized_copy」行に 2 つのエラーを表示し続けます。どちらもライブラリのヘッダーに戻ります。

問題は、char から char* への変換がその行のどこにあるのか、同じ型 (str.first、str.onePastLast) の 2 つのポインターを "!=" と比較できない理由がわからないことです。

「new」も使えますが、前述のとおり、 で練習したいと思い<memory>ます。では、なぜこれが機能しないのか誰か教えてもらえますか?

0 投票する
5 に答える
1425 参照

c++ - 動的/状態ベースのアロケータを使用する STL 実装?

使用前に動的アロケーターをコンテナーのインスタンスに渡すことができる STL 実装を知っている人はいますか?

シナリオは、多数のメモリ プールを管理する一般的なメモリ アロケータがあり、たとえば stl::vector の各インスタンスに対して、異なるメモリ プールから各インスタンスを割り当てたいというものです。

標準の STL 実装の問題は、型ベースでのみメモリ プールを定義できることです。つまり、型 int のすべてのベクトルは同じプールから割り当てられます。

私はすでにデフォルトの stl::allocator を、状態を持つもの、つまりこのインスタンスを割り当てたいプールに交換しましたが、これは、デフォルトの ctor に物を割り当てる stl::list ではうまく機能しません。

ライブラリに関連する理由により、すべてのオブジェクトに対して有効なプールが ctor にないため、ユーザーが stl コンテナーを使用できるようになる前に、「メモリ プールの設定」関数を呼び出す必要があります。

この種のことをサポートする実装に出くわした人はいますか?