函数传值时的内存复制

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

      根源:用指针变量作为参数来传递值,在将此值赋值给另一个变量进行保存时,不能简单的利用“=”进行传递,而应该使用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的值,则不需要这样做,直接使用即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值