複数の質問に気付きました.C++の専門家は、std::string/std::map/etc. 'new' キーワードを使用して作成しないでください (明らかでない場合は、C++ の初心者)。
したがって、私の理解が正しければ、これはヒープではなくスタックに作成されます。これは、関数が範囲外になった瞬間にオブジェクトが消えることを意味しますが、そうではないと私は信じており、私の理解は間違っています。
これは、基になるテンプレートがヒープ上でインスタンス化し、auto_ptr を使用して管理するため、メモリ リークが発生しないためですか? これはすべての stl クラスに適用されますか?
また、フォローアップの質問は、マップに挿入されるオブジェクトを作成する方法は何ですか? ヒープに割り当てる必要がありますか (関数の範囲外で価値がある場合)。
編集:
ヒープとスタックの違いと、それぞれを使用する理由を理解しています (おそらくこれについて明確ではありませんでした)。
私がこれを要求する理由は、保持したいオブジェクトのスタック上でオブジェクトをインスタンス化するだけでは不自然に思えるからです。しかし、これは構文がどのように見えるかだけだと思います。
つまり、書いているときにスタックに何かがあるような気がします。
std::map<int,int> mymap;
それ以外の、
std::map<int,int> *mymap = new std::map<int,int>;
これがメモリに与える影響についても疑問に思っています。この実装自体によってメモリがクリーンアップされるようになったので、Java のガベージ コレクションに似ていますか? stl オブジェクトを使用すると、暗黙のパフォーマンスへの影響はありますか?