POLICYELEMENT st_Policy ;
st_Policy.byteDataType = 1;
st_Policy.dwDataSize = sizeof(CLIENTXML);
st_Policy.byteReserve1 = 11;
CLIENTXML st_MXL;
memset(&st_MXL,0,sizeof(st_MXL));
st_MXL.nFalg = 11;
st_MXL.nRet =22;
st_Policy.pData = new BYTE[sizeof(st_MXL)];
memcpy(st_Policy.pData,&st_MXL,sizeof(CLIENTXML));
Testmap.insert(map<int, POLICYELEMENT>::value_type (1,st_Policy));
map<int,POLICYELEMENT>::iterator Policy_iter = Testmap.begin();
for (;Policy_iter!=Testmap.end();++Policy_iter)
{
PPOLICYELEMENT stTemp = new POLICYELEMENT;
memcpy(stTemp,&Policy_iter->second,sizeof(POLICYELEMENT));
cout<<stTemp->dwDataSize<<endl;
cout<<stTemp->byteDataType<<endl;
cout<<Policy_iter->first<<endl;
CLIENTXML *stClient = new CLIENTXML;
memset(&stClient,0,sizeof(CLIENTXML));
char *buffer = new char[sizeof(POLICYELEMENT)+stTemp->dwDataSize];
memset(buffer,0,sizeof(POLICYELEMENT)+stTemp->dwDataSize);
memcpy(buffer,&Policy_iter->second,sizeof(POLICYELEMENT)+stTemp->dwDataSize);
memcpy(stClient,buffer+sizeof(POLICYELEMENT),stTemp->dwDataSize);
//cout<<stClient->nFalg<<endl;
//cout<<stClient->nRet<<endl;
}
typedef struct st_ClientXML
{
int nFalg;
int nRet;
}CLIENTXML;
typedef struct st_PolicyElement
{
long byteDataType; //配置数据类型
char byteReserve1; //保留
long dwDataSize; //数据大小
void* pData; //数据
st_PolicyElement()
{
byteDataType = 0;
byteReserve1 = 0;
dwDataSize = 0;
pData = NULL;
}
~st_PolicyElement()
{
if(pData)
{
delete[] pData;
pData = NULL;
}
}
const struct st_PolicyElement& operator =(const struct st_PolicyElement& stPolicyElement)
{
if(pData)
{
delete[] pData;
pData = NULL;
}
byteDataType = stPolicyElement.byteDataType;
byteReserve1 = stPolicyElement.byteReserve1;
dwDataSize = stPolicyElement.dwDataSize;
if(0 < stPolicyElement.dwDataSize)
{
pData = new BYTE[stPolicyElement.dwDataSize];
memcpy(pData, stPolicyElement.pData, stPolicyElement.dwDataSize);
}
return *this;
}
}POLICYELEMENT, *PPOLICYELEMENT;