Если вы потеряете область действия myValue
, это утечка памяти.Так что лучше хранить MyClass*
на вашей карте.
std::map<std::string, MyClass*> myMap;
myValue = new MyClass();
myMap["myKey"] = myValue;
В данном примере также убедитесь, что вы delete
элемент, стирая или удаляя из map<>
.Вы можете использовать умный указатель (например, boost::shared_ptr
), если не хотите беспокоиться об управлении памятью.
Кроме того, из вашего приведенного примера я не знаю, почему он должен аварийно завершить работу при разыменовании *myClass
.Вы делаете какие-то странные вещи в конструкторе копирования MyClass::MyClass(const MyClass&)
?