问一个大块内存操作的问题。
我定义了一个结构:
struct FRIEND_INFO
{
int nFace;
CString strFriendID;
CString strFriendName;
CString strJob;
FRIEND_INFO& operator = (const FRIEND_INFO& set)
{
nFace = set.nFace;
strFriendID = set.strFriendID;
strFriendName = set.strFriendName;
strJob = set.strJob;
}
};
FRIEND_INFO * m_pFriend;
int m_nFriendItems;
m_nFriendItems的个数不定,一般活跃用户在400以上。
m_pFriend = new FRIEND_INFO[m_nFriendItems];
在接收到一些网络消息的情况下,会做如下操作:
void OnUserAdd(CString strFriendID, CString strFriendName)
{
FRIEND_INFO * temp = new FRIEND_INFO[m_nFriendItems+1];
for(int i=0;i<m_nFriendItems;i++)
temp[i] = m_pFriend[i];
delete[] m_pFriend;
m_pFriend = temp;
m_pFriend[m_nFriendItems].strFriendID = strFriendID;
....
m_nFriendItems++;
}
由于接收到网络消息后是以PostMessage来处理。
对这片内存的处理可能会有两个线程同时处理的问题,我应该怎么做来避免这种问题的发生。
还有大内存如果有比较频繁的new 和 delete 会有问题吗?
谢谢