我有下面的示例代码。ServantI.cpp:login 方法,它构造了一个New UserContext。在context返回之前,赋值给new Session的sessionContext字段,即UserContext*;
//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 指针的地方。如果我更改,它也会报告运行时未处理异常
UserContext* _sessionContext;
至
UserContext_var _sessionContext;
在课堂上