typedef struct _DATA
{
  char  buffer[1024];
  int   i;
  BOOL  states;
  char  *pBuf;
}DATA, *PDATA;typedef struct _PACKET
{
 char   *pIodata;
 PDATA  pNode;
 int    j;
 char   Array[100]
}PACKET, *PPACKET;PPACKET p1 = new(PPACKET, sizeo(fPACKET));
//这里将p1赋值,
PPACKET p2 = new(PPACKET, sizeo(fPACKET));
//现在我要将p1的各项值赋给p2该如何办?也就是说要让p2和p1各项值是相同的,但是如果p1被delete后不影响p2,我用了memcpy和CopyMemory都不行其实问题就是:如何将一个new出来的结构指针(该结构的成员中的一些也是new出来的)指向的各项值复制给另外一个new出来的结构指针?是复制!不是赋值,如果一项一项赋值的话,那么new出来的成员到最后指向的是同一个内存

解决方案 »

  1.   

    用memcpy(void *des,void *ori,int size);
      

  2.   

    cmsbai(小白):
    1楼的,我觉得没那么简单,注意里面包含了指针变量
    mscf(扎西特勒)说的方法可行。。类似类的赋值函数
      

  3.   

    这是我试过的,delete p1 后 p2 保持p1的情况--------------------typedef struct _DATA
    {
      char  buffer[1024];
      int   i;
      BOOL  states;
      char  *pBuf;
    }DATA, *PDATA;typedef struct _PACKET
    {
     char   *pIodata;
     PDATA  pNode;
     int    j;
     char   Array[100];
    }PACKET, *PPACKET;void CTtdDlg::OnOK() 
    {
    char abc[] = {"1234567890"};
    DATA dd = {"12312312312", 11, TRUE, NULL}; PPACKET p1 = new PACKET;
    p1->j = 11;
    p1->pIodata = abc;
    p1->Array[0] = '1', p1->Array[0] = '2';
    p1->pNode = ⅆ PPACKET p2 = new PACKET; *p2 = *p1; delete p1;
    Sleep(10);
    delete p2;
    //CDialog::OnOK();
    }
      

  4.   

    用自己做个赋值函数,但是对于里头的指针要进行memcpy(void *des,void *ori,int size);,