問題タブ [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 投票する
1 に答える
151 参照

c++ - 異なるアロケータによって割り当てられたメモリの使用

Nowによって割り当てられたvectorタイプの内部動的配列を維持するというクラスがあるとします。タイプのを構築し、後で移動セマンティクスを使用して、タイプので消費されるメモリを使用できるようにします。Tstd::allocator<T>.vectorUvectorT

のmoveコンストラクタuで'sアロケータによって割り当てられたメモリを使用し、後で' sアロケータを使用して割り当てを解除しても安全ですか?もしそうなら、この操作が安全であることを保証するために私は何をしなければなりませんか?最初に、アロケータを使用して内部配列の各要素を呼び出す必要があると思います。ttallocator.destroy()uu

0 投票する
6 に答える
1133 参照

c - スタックとヒープの違い

以下のコードに関して、スタックとヒープの違いを教えてください

arrは静的配列であり、arr [3000]を実行すると、他のプロセスのアドレスにアクセスしているため、SIGSEGVエラーが発生します。しかし、なぜa[4000]で実行時エラー(SIGSEGV信号)が発生しないのかわかりません。

ありがとう

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

c++ - std::allocator からの継承を作成する方法と、それは妥当ですか?

私が疑問に思っていることは単純です-DLLを作成し、静的ランタイムでコンパイルする場合、そのコードでは、std::allocatorから継承する単純なアロケーターを作成します.N個の異なるヒープのみを使用することは可能ですか?すべての N ヒープにわたるメモリ管理のためのこのライブラリ ヒープ (アロケータを備えたもの) ? そして、そのようなアロケーターを作成する方法は?

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

c++ - カスタム プール アロケータが提供されている場合はそれを使用するが、デフォルトは std::allocator になる、ベクトルを返す関数を作成する方法は?

以下のコードは関数 make_vector() です。ベクトルを作成し、呼び出し元に返します。使用するベクターのアロケーターを指定できるようにしたいのですが、デフォルトでデフォルトの std::allocator を使用します。これは、状況によってはデフォルトのアロケータで十分な場合もあれば、事前に定義されたメモリ プールから割り当てる必要がある場合もあるためです。

最も近いのは make_vector2() 関数テンプレートです。std::allocator で動作しますが、'arena' 引数をカスタム アロケータに渡す方法がわかりません。

この動作する c++11 の例でよりよく説明されることを願っています。

main() では、割り当てに TEXTURES アリーナを使用するために vec1 が作成されます。使用するアリーナは、アロケーターのコンストラクターに渡されます。Vec2 は make_vector2() テンプレート関数によって作成され、std::allocator を使用します。

Q: make_vector() 関数を定義して、std::allocator または上記のカスタム プール アロケーターを使用するベクターを作成するにはどうすればよいですか?

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

c++ - C ++ 11にvector(size_type n、const Allocator&alloc)がないのはなぜですか?

C ++ 11では、std :: vectorには、vector(size_type n)デフォルトで構築nアイテムを配置するコンストラクターがあります。これは、デフォルトの構築可能、移動可能、コピー不可能なクラスで使用できます。

ただし、他のすべてのベクトルコンストラクターとは異なり、アロケーターを使用するバリアントはありません。私は次のことに頼りました。

これを達成するためのより良い方法はありますか?vector(size_type n, const Allocator& alloc)規格から除外された特別な理由はありますか?

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

c++ - Vector: 関数 vector ( const vector を実行します& バツ ); 配列が格納されている場所のアドレスを取得するだけですか?

もしそうなら、配列の最後に null ターミネータがあると仮定できますか?

0 投票する
4 に答える
861 参照

c++ - マルチスレッドアプリケーションのローカル変数としての標準コンテナ

標準ライブラリのコンテナはスレッドセーフではないという事実を知っています。それによって、私は、たとえばタイプのコンテナには、std::list複数のスレッドが同時にアクセスできないと考えていました(その一部はコンテナを変更する可能性があります)。しかし今では、目に見える以上のものがあるようです。少なくとも私にとっては、もっと微妙なもの、それほど明白ではないもの。

たとえば、最初の引数を値で受け入れるこの関数について考えてみます。

これはスレッドセーフですか?

最初は、関数本体が共有の変更可能なリソースにアクセスしないため、スレッドセーフであるように見えます。したがって、スレッドセーフです。考え直してみると、このような関数を呼び出すstd::stringと、最初の引数である型のオブジェクトが作成されます。このオブジェクトの構築は、内部でを使用するため、スレッドセーフではないと思いますstd::allocator。スレッドセーフではないと思います。したがって、このような関数を呼び出すこともスレッドセーフではありません。しかし、それが正しければ、これはどうでしょうか。

私は正しいですか?マルチスレッドプログラムで使用できますかstd::string(または内部で使用するコンテナ)?std::allocator

私は特に、共有オブジェクトではなく、ローカル変数としてのコンテナーについて話しています。

私はグーグルを検索し、具体的な答えがないまま、多くの同様の疑問を見つけました。私は彼と同様の問題に直面しています:

C++03とC++11の両方を検討してください。

0 投票する
4 に答える
427 参照

c++ - デフォルトのアロケータは int をゼロ化しますか?

STL コンテナーを使用する場合、デフォルトのアロケーターによって割り当てられた int がゼロ化されているかどうかがわかりません。次のコードは、質問に対して「はい」を示します。

これを確認した文書はないので、私はそれを当然のこととは考えていません。

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

c++ - std::map標準アロケータのパフォーマンスとブロックアロケータの比較

C ++最適化クックブックで、std :: list、std :: set、std :: multi_set、std :: map、e std::multi_mapなどのSTLコンテナーの標準アロケータをよりパフォーマンスの高いものに置き換えることができることを読みました。ブロックアロケータ

ブロックアロケータは、パフォーマンスが高く、断片化が少なく、データキャッシングが効率的です。

私はウェブ上で、標準よりも速いと主張するFSBAllocatorを見つけました。 http://warp.povusers.org/FSBAllocator/

std :: mapで試してみたところ、確かに速いようですが、私の質問は、STLの実装が特定のアロケータよりも遅くなる可能性と、標準よりも別のアロケータの欠点は何であるかということです。移植性と堅牢性の両方の?私のコードは、さまざまなアーキテクチャ(win32、osx、linux)でコンパイルする必要があります。誰かがその種の固定サイズのブロックアロケータを使った経験がありますか?

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

c++ - std::allocator_traits の使用