今天在进行指针操作时,在函数内已经将值保存在成员变量中,但是发现在使用时,传递过来的值却不正确,在对代码进行跟踪时,发现了这个很”小白“的问题,呵呵,记录下来,下次要多注意了!!!!
根源:用指针变量作为参数来传递值,在将此值赋值给另一个变量进行保存时,不能简单的利用“=”进行传递,而应该使用memcpy进行内存的复制
例:
类成员变量:m_map
StructData *Temp = Null;
设置函数:
void SetFunc(int n, StructData * data)
{
Temp = new StructData;
memcpy(Temp,data,sizeof(StructData));
//Temp = data; (有问题)
}
Temp = data; 如果利用此方法赋值,只是单纯的将data的首地址传给了Temp,当调用的SetFun函数结束时,data的内存可能被回收,那么该内存对应的值也将变化,Temp中的值将出问题。
但如果只是想在函数内使用data的值,则不需要这样做,直接使用即可。