函数传值时的内存复制

来源:互联网 发布:成人频道直播软件 编辑:程序博客网 时间:2024/05/17 00:50

       今天在进行指针操作时,在函数内已经将值保存在成员变量中,但是发现在使用时,传递过来的值却不正确,在对代码进行跟踪时,发现了这个很”小白“的问题,呵呵,记录下来,下次要多注意了!!!!

      根源:用指针变量作为参数来传递值,在将此值赋值给另一个变量进行保存时,不能简单的利用“=”进行传递,而应该使用memcpy进行内存的复制

      例: 

             类成员变量:m_map

StructData *Temp = Null;

             设置函数:

              void SetFunc(int n, StructData * data)

{

Temp = newStructData;

                        memcpy(Temp,data,sizeof(StructData));

                       //Temp = data; (有问题)

}

          Temp = data;   如果利用此方法赋值,只是单纯的将data的首地址传给了Temp,当调用的SetFun函数结束时,data的内存可能被回收,那么该内存对应的值也将变化,Temp中的值将出问题。

         但如果只是想在函数内使用data的值,则不需要这样做,直接使用即可。