問題タブ [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.
c++ - C++ STL メモリ アロケータ コンパイル エラー
STL で使用する C++ カスタム アロケータを作成しています。次のコードをクラス定義に入れると、コンパイルされます。
しかし、別の .cpp ファイルに入れると、次のエラーが発生します。私は何を間違っていますか?エラーは static_cast 行にあります。
PT
memory-management - MFCアプリケーションのデバッグビルドでメモリアロケータを置き換えることは可能ですか?
MFCアプリケーションで電気柵を利用したいのですが。new
/を追跡したいのですが、追跡delete
できればmalloc
/free
それは追加のボーナスです。
残念ながら、MFCは再定義new
しdelete
ますが、マクロ(DEBUG_NEW)を使用しているため、標準のC++メソッドを使用して再定義することはできません。(MFCは、追加のパラメーターとしてソースファイルと行番号を使用して、異なる署名を持つようにそれらを定義します)。
new
すべての/ sを強制的delete
にアロケータを経由させ、MFCがこれらのアロケータを取得しようとするのを停止する方法はありますか?
c++ - C++STL用の拡張ラッパーmallocアロケータ
どうやら、STLで使用するためにgccで提供される「malloc_allocator」があります。それは単にmallocをラップして無料です。メモリ不足ハンドラーのフックもあります。どこでそれについてもっと知ることができますか?ヘッダーファイルはどこにありますか?gcc4.xを使用しています。
c++ - 共有メモリオブジェクトを作成するためのC++クラステンプレートへのアロケータの追加
要するに、私の質問は次のとおりです。クラスがある場合、たとえばSTLベクトルが提供する方法と同様にMyClass<T>
、クラス定義を変更して、ある場合をサポートするにはどうすればよいですか。MyClass<T, Alloc>
共有メモリのアロケータをサポートするには、この機能が必要です。具体的には、共有メモリにリングバッファを実装しようとしています。現在、次のctorがあります。
ここItemType
で、はバッファの各スロットに配置されるデータのタイプです。
さて、これはメインプログラムからバッファを作成するときに素晴らしい働きをします。
ただし、この場合、バッファ自体は共有メモリに作成されないため、他のプロセスからアクセスできません。私がやりたいのは、次のようなことができるようにすることです
ただし、クラステンプレートに明示的なアロケータを追加する方法がわかりません。
c++ - 共有メモリ STL マップ
C++ で Apache モジュールを作成しています。すべての子が共有メモリの一部として読み取る必要がある共通データを格納する必要があります。構造はベクトルの地図のようなものなので、STL の地図とベクトルを使いたいと思っています。この目的のために共有アロケーターと共有マネージャーを作成しました。これらはベクターでは正常に機能しますが、マップでは機能しません。以下に例を示します。
2 番目のオブジェクト (spIndex) を使用しようとすると、次のようなコンパイル エラーが発生します。
../SpatialIndex.h:97: エラー: '((SpatialIndex*)this)->SpatialIndex::spIndex' にクラス型がありません
コンパイラが SharedMap テンプレート タイプのタイプを判別できないように見えますが、これは私の意見では奇妙です。すべてのテンプレート パラメータが指定されているように思えます。
手伝ってくれますか?
ありがとうベンヴェヌート
こんにちは、コメントありがとうございます。
SpatialIndex はコンテナを含むクラスで、基本的にはコンテナ (SpatialIndex のメンバーである SharedMap spIndex) と 2 つのメソッド update と getData によって作成されます。
update メソッド内で、次のコード行で上記のコンパイラ エラーが発生します。
最後の行の構文を変更すると、コンパイラが与えるエラーが異なりますが、基本的には、どの型変数 spIndex が理解できないか、このクラスの適切なオーバーロード コンストラクターが見つからないことを示しています。
c++ - C++STL準拠のアロケータ
小さなオブジェクトを処理するときにSTLで使用できるアロケータはどれですか。Boostのプールアロケータで遊んでみましたが、パフォーマンスは向上しませんでした(実際、かなりの劣化があった場合もあります)。
c++ - C ++は、関数内の一時的な割り当てをカスタムアロケータにリンクしますか?
私は現在、一般的にすでに機能しているc++のいくつかの単純なカスタムアロケータに取り組んでいます。また、new / delete演算子をオーバーロードして、自分のアロケータからメモリを割り当てました。とにかく、私はメモリがどこから来ているのか本当にわからないいくつかのシナリオに出くわしました:
この場合、testObjは関数内でのみ有効ですが、そのメモリはどこから取得されますか?とにかくそれを私のアロケーターにリンクすることはできますか?newとdeleteを使用してオブジェクトを作成する必要がありますか、それとも別の方法がありますか?
ありがとう
c++ - C ++アロケータ、具体的には、boost :: interprocess::cached_adaptive_poolで割り当てられたオブジェクトにコンストラクター引数を渡します
これは恥ずかしい質問ですが、boost.interprocessで提供されるよく書かれたドキュメントでさえ、これを行う方法を理解するのに十分ではありませんでした。
私が持っているのはcached_adaptive_poolアロケータインスタンスであり、これを使用してオブジェクトを構築し、コンストラクターパラメーターを渡します。
これは、一般的なアロケータオブジェクトの使用方法に関する私の側の失敗である可能性が非常に高いです。しかし、いずれにせよ、cached_adaptive_poolで指定されたインターフェイスを使用して、この特定のアロケータを使用してコンストラクター引数をオブジェクトに渡す方法がわかりません。
cached_adaptive_pool
方法があります:void construct(const pointer & ptr, const_reference v)
しかし、それが何を意味するのか理解できず、それを使用した例を見つけることができません。
私の頭は一日中テンプレートで泳いでいるので、答えが明白であっても、助けの手は大いに感謝されます。
c++ - 可変個引数テンプレートのない汎用アロケータ クラス?
free() されたときにオブジェクトのメモリを実際に解放しないが、それをキューに保持し、新しいオブジェクトが要求された場合に以前に割り当てられたオブジェクトを返すジェネリック アロケータ クラスを作成しようとしています。さて、私の頭を包み込めないのは、アロケーターを使用するときにオブジェクトのコンストラクターに引数を渡す方法です (少なくとも、可変個引数テンプレートに頼ることなく)。私が思いついた alloc() 関数は次のようになります。
それでも、今日の C++ (および可変個引数テンプレートをサポートしない古いバージョンの GCC) と互換性のあるコードが必要です。オブジェクトコンストラクターに任意の量の引数を渡す方法は他にありますか?
c++ - 文字列の容量値に使用します
C ++標準ライブラリにstd::string
は、内部に割り当てられたストレージのサイズを返すパブリックメンバー関数capacity()
があります。これは、文字列の文字数以上の値です(ここによると)。この値は何に使用できますか?カスタムアロケータと関係がありますか?