局部变量的值消失了?

时间:2013-02-04 17:21:47

标签: c++

我有这个实现:

//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()?

中的数据是清理的

2 个答案:

答案 0 :(得分:2)

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

void myMethod1(Mydata &otherdata)
{
  *data = otherdata;
}

答案 1 :(得分:0)

添加到juanchopanza的答案:

假设代码有拼写错误(如果真的是memcpy()

memcpy(&data, &otherdata, sizeof(otherdata));将无法正常工作,因为data已经是指针。和'&'在指针上是指针的地址=只是错误地使用了memcpy