У меня есть пример кода ниже. Метод ServantI.cpp: login, он создает новый UserContext. Перед возвратом контекста ему присваивается поле sessionContext нового сеанса, которое является UserContext *;Corba IDL struct memory leakage
//idl:
struct UserContext{
string name;
string ipaddress;
string ssoToken;
};
UserContext login(in string name, in string cipher) raises (AuthenticationException);
void logout(in string name);
// servantI.cpp
::project::UserContext * servantI::login (
const char * name,
const char * cipher)
{
project::UserContext* context = new UserConytext(); ...
boost::shared_ptr<Session> session(new Session(name, context));
map.addSession(name, session);
return context;
}
void servantI::logout (const char * name)
{
map.remove(name);
}
//Session.h:
class Session
{
std::string _username;
UserContext* _sessionContext;
public:
Session(string name, UserContext* context){ _sessionContext = context; ..}
virtual ~Session(void){
cout<<"Call descrutction "<<endl;
}
}
Мой вопрос, есть ли утечка памяти в сессии класса, так как есть место, чтобы освободить указатель _sessionContext. Он также сообщает о время выполнения unhandle исключения, если я изменю
UserContext* _sessionContext;
в
UserContext_var _sessionContext;
в классе сессии
Что 'map'? Является ли он членом «сессии»? –
boost :: unordered_map> map; –