問題タブ [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 に答える
1313 参照

c++ - boost::vector と boost::matrix の割り当て戦略を動的に変更する

私の新しいプロジェクトでは、データ管理モジュールを構築しています。単純なテンプレート ストレージ タイプを上位層に提供したいと考えています。

私の目的は、Boost.inter プロセス アロケーターや Boost.pool アロケーター (Boost Ublas Matrix および vector クラスはアロケーターをテンプレート パラメーターとして受け取る) のようないくつかの異なるアロケーターでデータのアロケーターを変更することです。カバーの下の適切なアロケータ.仮想基本クラスは素晴らしいかもしれませんが、テンプレートでそれを使用する方法を処理できませんでした.どのようなデザインパターンまたはソリューションを提供していますか?

編集:

私はboost.poolとboost.shared_memory_allocatorを使用します.簡単に言えば、異なる割り当て戦略を持つ異なるクラスが必要です.しかし、私のポイントは、プログラムの上部にはそれについての知識がないはずです.同一の基本クラス。

編集:カスタムアロケータでマトリックスクラスを使用したい人向け。

それはこのようなものです:

0 投票する
17 に答える
109172 参照

c++ - カスタムC++アロケータの説得力のある例?

std::allocatorカスタムソリューションを支持するために捨てる本当に良い理由は何ですか?正確性、パフォーマンス、スケーラビリティなどに絶対に必要な状況に遭遇したことがありますか?本当に賢い例はありますか?

カスタムアロケータは、私があまり必要としなかった標準ライブラリの機能でした。ここSOの誰かが、彼らの存在を正当化するための説得力のある例を提供できるかどうか疑問に思っていました。

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

c++ - マップ アロケーターの問題を含む C++ テンプレート

CSV ファイルからマップをロードするテンプレート関数を定義します。

私はそれを使用しようとします:

しかし、htis コンパイル時エラーが発生します。

関数呼び出しがいくつかの暗黙の引数を取り込んでいるようですが、エラーとその修正方法がわかりません。何か案は?

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

c++ - ロック フリー アリーナ アロケーターの実装 - 正しいですか?

単純なポインターインクリメントアロケーターの場合 (正式な名前はありますか?) ロックフリーのアルゴリズムを探しています。些細なことのように思えますが、私の実装が正しいかどうかについてのフィードバックが欲しいです。

非スレッドセーフ実装:

スレッドセーフな実装での私の試み:

whereCMPXCHGは引数付きの連動比較交換で(destination, exchangeValue, comparand)、元の値を返します

私には良さそうです - 別のスレッドが get-current と cmpxchg の間に割り当てを行うと、ループが再試行されます。コメントはありますか?

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

c++ - std :: string :: max_size()== std :: string :: allocator :: max_size()ではないのはなぜですか

最近、次のステートメントが当てはまらないことに気づきましたstd::string s

std::stringこれは興味深いと思います。デフォルトstd::allocator<char>では、理論上の制限がありsize_type(-1)ます(2の補数を想定していることはわかっていますが、実際の質問とは関係ありません)。実際の制限はこれよりも大幅に少なくなることを私は知っています。一般的な32ビットのx86システムでは、カーネルはアドレス空間の2GB(おそらく1GB)を占有し、実際の上限ははるかに小さくなります。

とにかく、GNU libstdc ++std::basic_string<>::max_size()は、使用しているアロケータが何を言っているかに関係なく、同じ値を返すように見えます(のようなもの1073741820)。

それで、疑問は残ります、なぜstd::basic_string<>::max_size()ただ戻ってこないのget_allocator().max_size()ですか?これが架空の上限であるように私には思えます。そして、割り当てが不足している場合は、をスローするだけなstd::bad_allocので、試してみませんか?

これは何よりも好奇心が強いのですが、少なくともこの1つの実装で2つが別々に定義されているのはなぜだろうと思っていました。

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

c++ - カスタムアロケータを使用したアカウントのメモリ使用量

カスタムアロケータを使用して、いくつかのコンテナのメモリ使用量を考慮しています。現在、メモリ使用量を説明するために静的変数を使用しています。異なる静的変数を使用するようにアロケータを書き直すことなく、このアカウントを複数のコンテナに分割するにはどうすればよいですか?


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

c++ - STL アロケータと演算子 new[]

operator new[]アロケータとして使用する STL 実装はありますか? 私のコンパイラでは、Foo::operator new[]private を作成しても ... を作成できませんでしたvector<Foo>。その動作は何かによって保証されていますか?

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

c++ - 64ビットインデックスを使用してstd::vectorを作成するにはどうすればよいですか?

私は大きな ものを作りたいstd::vectorので、operator[]受け取るべきではlong longなくunsigned int、私は自分のアロケータを書いてみました:

しかし、私が次のことを試してみると:

2行目と3行目に次の警告が表示されます。

警告C4244:'引数':'__int64'から'unsigned int'への変換、データが失われる可能性があります

私は何が欠けていますか?operator[]サイズコンストラクターの型と型はから来るべきだと思いましたallocator::size_type

VS9(2008)を使用しています。

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

optimization - 同時アロケータを使用したフリーリスト

フリーリストは、既に割り当てられている既存のメモリを再利用することにより、割り当てを高速化する一般的な方法です。割り当てごとにロックのオーバーヘッドを発生させずに、同時アロケーターでフリーリストを使用する方法はありますか?