-6

我有这个实现:

//header file:

InfoTables* localInforTable;

typedef txdr_int32 InfoTable;

typedef struct
{
  int sendID;
  InfoTable *data;
} InfoTables;

// in cpp file
void Retrieval::InfoTableCallBack(int sendID,
                  InfoTables& infoTables)
{
    localInforTable = new InfoTables();

    localInforTable.sendId=sendID;
    localInforTable->data = infoTables.data;

    printf("Data %d, %d\n", localInforTable.sendId, localInforTable->data[0]); // correct data
}

void Retrieval::CheckInfoData()
{
    printf("Data %d, %d\n", localInforTable.sendId, localInforTable->data[0]); // sendID is OK but data9[0] is just printing the address
}

我想将方法​​ InforTableCallBack 中的 inforTables 复制到可用于其他方法的局部变量。但是数据在 CheckInfoData() 中被清理了吗?

4

2 回答 2

2

代码存在各种错误。首先,data不指向任何分配的内存。其次,memcpy对于不可复制的用户定义类型根本不起作用。您可以改用MyData' 赋值运算符:

void myMethod1(Mydata &otherdata)
{
  *data = otherdata;
}
于 2013-02-04T17:23:48.810 回答
0

添加到 juanchopanza 的答案:

假设代码有错字(如果真的是memcpy()

memcpy(&data, &otherdata, sizeof(otherdata));将根本无法正常工作,因为data它已经是一个指针。并且指针上的“&”是指针的地址=只是错误使用memcpy

于 2013-02-04T17:26:59.960 回答