7333 次
1 に答える
6
このバージョンのinsert
は、非 const 参照によってキーを取得します。つまり、一時値を最初の値として使用することはできません。これは、メモリ リークを防ぐためです。あなたのコードでtemp
は、文字列コンストラクターがスローされた場合にリークします。
生のポインターを作成する前に、キー オブジェクトを作成する必要があります。
string key("SomeKey");
any* temp = new whatever;
SomeMap.insert(key, temp);
または anauto_ptr
を使用して、何が起こってもオブジェクトが確実に削除されるようにします。
auto_ptr<any> temp(new whatever);
SomeMap.insert("SomeKey", temp);
于 2010-06-18T17:20:51.977 に答える