(&実行をコンパイル):
#include <map>
class MyObject
{ };
int main(void)
{
typedef std::map<int, MyObject*> MyMap;
MyMap *myMap = new MyMap;
MyObject *obj = new MyObject;
myMap->insert(MyMap::value_type(0, obj));
delete obj;
delete myMap;
}
だから問題は、詳細(
// ...
または
MyObject
は何ができるか)、または他の場所にあります。おそらく、少し助けてくれるものを修正することができます。あなたができるときに物事を割り当てることを積み重ねてみてください。実際にマップへのポインタが必要ですか?
#include <map>
class MyObject
{ };
int main(void)
{
typedef std::map<int, MyObject*> MyMap;
MyMap myMap;
MyObject *obj = new MyObject;
myMap.insert(MyMap::value_type(0, obj));
delete obj;
}
実際にオブジェクトやオブジェクトへのポインタを格納する必要がありますか?
#include <map>
class MyObject
{ };
int main(void)
{
typedef std::map<int, MyObject> MyMap;
MyMap myMap;
myMap.insert(MyMap::value_type(0, MyObject()));
}
メモリリークが非常に小さく、ほとんど不可能です。 の場合はポインタを格納する必要があり、多態的な動作の場合はのboost::ptr_container libraryをチェックしてください。
スタックトレースはどのようになっていますか? – GManNickG
完全なスタックトレースを提供するか、valgrindを使用してメモリの誤用を検出します:-) –
愚かなコメントかもしれませんが、挿入する前にmyMapオブジェクトを削除していませんか? – Naveen