指针有关问题,请高手及时帮忙,今晚得解决这个有关问题

指针问题,请高手及时帮忙,今晚得解决这个问题
定义了结构如下:
struct   __CollectorCommCmd
{
        uint32_t   code;
        uint32_t   len;
        char   *pData;
}

写了如下测试函数
HRESULT     CCollector::writeperfData(__CollectorCommCmd   *   i_p_cmd,   char   *   buff)
{
    int     cmd_len   =   sizeof(i_p_cmd-> code)   +sizeof(i_p_cmd-> len)   +   i_p_cmd-> len;
    buff   =   new   char[cmd_len];
    memcpy(buff,   i_p_cmd,   (sizeof(i_p_cmd-> code)   +   sizeof(i_p_cmd-> len)));
    memcpy(buff   +8,i_p_cmd-> pData,i_p_cmd-> len);
}


些函数目的是形成指针数据,通过socket   发送,现socket   发送函数是正常的,而调用
__CollectorCommCmd     cmd
char   *   buf;
char     temp[10]   ;
cmd.code     =   CMD_OUT_PERF_TASK;
sprintf(temp, "%s ", "woshizhu ");
cmd.len   =sizeof(temp);
cmd.pData=   (char   *)malloc(strlen(temp)*sizeof(char));
memcpy(cmd.pData,temp,strlen(temp)*sizeof(char));
writeperfData(&cmd,   buf);
memcpy(buffdata,buf,sizeof(buf));
cout < < "Buffdata   = " < <buffdata < <endl;
  输入buffdata   ,但buffdata   是乱码?请问这是怎么回事?

------解决方案--------------------
sprintf(temp, "%s ", "woshizhu ");
.........
------解决方案--------------------
........ 猪也会c++
------解决方案--------------------
int writeperfData(__CollectorCommCmd * i_p_cmd, char ** buff)
{
int cmd_len = sizeof(i_p_cmd-> code) +sizeof(i_p_cmd-> len) + i_p_cmd-> len;
*buff = new char[cmd_len];
memcpy(*buff, i_p_cmd, (sizeof(i_p_cmd-> code) + sizeof(i_p_cmd-> len)));
memcpy(*buff + 8,i_p_cmd-> pData,i_p_cmd-> len);

return cmd_len;
}

void main(void)
{
__CollectorCommCmd cmd;
char * buf;
char* buffdata = new char[1024];
char temp[15] ;
cmd.code = CMD_OUT_PERF_TASK;
sprintf(temp, "%s ", "nishizhu ");
cmd.len =sizeof(temp);
cmd.pData= (char *)malloc(strlen(temp)*sizeof(char));
memcpy(cmd.pData,temp,strlen(temp)*sizeof(char));
int len = writeperfData(&cmd, &buf);
memcpy(buffdata,buf, len);

cout < < "Buffdata = ";

for (int i = 0; i < len; i++)
cout < <buffdata[i];
}