比如我现在有两个指针,a,b。如果只是简单的
a=b
那么a和b其实是共用一段地址的,对b的操作也会影响到a。
请问我该怎么样实现类似于
int a,b;
b=10;
a=b;
a = a+10;  //此时b还是10类似于上面的代码。
好像是深拷贝,但是不知道该怎么实现。因为我的指针是指向一个很复杂的结构体的

解决方案 »

  1.   

    a = (Widget)malloc(sizeof(Widget));
    a = b;是上面的那个样子么?其中 a b 都是已经定义过的Widget类型指针
      

  2.   

    貌似应该把a=b;
    改为
    memcpy(a,b,sizeof(Widget));
      

  3.   

    楼上的错误啊 
    a = b;
    这把你刚刚分配的空间给丢了 白白分配了一段空间 内存泄露了a = (Widget)malloc(sizeof(Widget));
    a已经指向了一个堆空间了
    下面的工作应该是对a所指向的空间进行赋值操作了