3
4

1 に答える 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 に答える