STLアロケータを使用するコンテナクラスを作成しようとしています。私が現在していることは、プライベートメンバーを持つことです
std::allocator<T> alloc_;
(これは後でテンプレート化され、ユーザーが別のアロケータを選択できるようになります)次に呼び出します
T* ptr = alloc_.allocate(1,0);
新しく割り当てられた「T」オブジェクトへのポインタを取得します(そして、alloc_.constructを使用してコンストラクタを呼び出します。以下の回答を参照してください)。これはGNUC++ライブラリで機能します。
ただし、Solaris上のSTLPortでは、これは正しいことを行うことができず、あらゆる種類の奇妙なメモリ破損エラーが発生します。私が代わりにやるなら
std::allocator_interface<std::allocator<T> > alloc_;
その後、すべて正常に機能しています。
stl :: allocatorを使用する正しい方法は何ですか?STLPort /Solarisバージョンはg++でコンパイルできませんが、g ++は正しいですか?