对象池中的对象有容器成员变量,会如何?欢迎讨论

对象池中的对象有容器成员变量,会如何?欢迎讨论

在我的代码中,一直用对象池管理部分对象的分配。我是对哪些对象才使用对象池呢?我只有一个原则就是:
当某种对象会被频繁的new和delete的时候,我会对这个对象使用对象池。

前两天,我在我的代码中发现了有这样一个类:

class  CPlayer :  public  IPlayer
{
public:
    CPlayer();    
    
virtual ~CPlayer();
    
virtual void Release();
    
virtual IServerSession* GetLoginSvr();
    
virtual GAMESVRVEC& GetGameSvrVec();
    
virtual INTVEC& GetFriendVec();
    
virtual INTVEC& GetBeFriendVec();
    
virtual st_info* GetUserInfo();
    
virtual IContainer* GetBag();
    
virtual IContainer* GetStorage();
    
virtual IContainer* GetHotKey();
    
virtual void SetBag(IContainer* pContainer);
    
virtual void SetStorage(IContainer* pContainer);
    
virtual void SetHotKey(IContainer* pHotKey);
    
void SetLoginSvr(CUserSession* pSession);    
    
void SetRelationSet(char cSet);
    
void SetUserInfo(const st_userinfo& stInfo);
private:
    CUserSession
* m_pLoginSvr;
    GAMESVRVEC m_vecGameSvr;
    INTVEC m_vecFriend;
    INTVEC m_vecBeFriend;    
    
char m_cRelationSet;
    st_info m_stUserInfo;
    IContainer
* m_pBag;
    IContainer
* m_pStorage;
    IContainer
* m_pHotKey;
}
;

由于这个玩家类,在玩家上下线的时候要频繁的分配和释放,于是我就创建了一个这个玩家的对象池。但是我发现这个类中含有大量的容器和指针,我顿时觉得这个对象池除了能省去频繁的new和delete好处之外,对内存管理几乎没有。因为容器或是指针还要去管理自己的内存,在网上有个同学和说,当结构中有容器成员变量时是不能用对象池的,因为对象池要求大小尺寸固定,但容器的尺寸不固定。我觉得他这种说法是不正确的,其实sizeof(容器)也是一个固定的值,只是容器另外还要管理自己的空间而已。那么遇到这种情况,这种对象池是否有必要,如果不用,我一样还要去new和delete。有的同学说,你这种设计就是错误的,应该把容器和其他的定长变量分开管理,只对定长变量做对象池管理,可是在代码的设计中,仅仅是为了这个池,把代码拆的凌乱不堪,我还不如不用。同学们,告诉我的你想法是什么?谢谢

再更新一次,还有很多大牛的声音没有听到!

你可能感兴趣的:(对象池中的对象有容器成员变量,会如何?欢迎讨论)