我有一个结构体指针,指向一段结构体内存CA *A1 = (CA *)malloc(sizeof(CA) + 100);
CA A2;我想把A2放在A1指向的这块内存中,应该怎么做呢?谢谢大家提供一下方法
即将A1指向的内存转换为A2

解决方案 »

  1.   

    有两个方法:
    1.
      CA A2;
      CA * A1 = &A2;
    2.
      CA A2;
      CA * A1 = (CA *)malloc(sizeof(CA) + 100);
      memcpy(A1,&A2);
      

  2.   

    A1指向一块内存;A2又是一块内存。
    一种办法是保留A1指向的内存,将A2的数据复制到A1指向的内存块;
    第二种办法是释放A1指向的内存块,将A1复制为&A2;
    当使用第二种方法时,你必须保证A2的生命周期,因为A2的内存块在生命周期结束时,系统会自动回收;而A1指向的内存块则不会被回收,这是很大的区别。
      

  3.   

    我能不能将A1指向的内存  强制转换为 A2 
    我的目的是A2的下面还有100的空间
      

  4.   

    直接用*(),把该指针区的值取出来就可以了,CStruct &A2 = *(A1)