首先我对C还是非常不了解,大婶们看看我这思路对不对?
就是想知道,结构体A和结构体B内都有结构体C,结构体B内的结构体C是从结构体B赋值过来的,如果之后结构体A被释放了,结构体B有没有影响。
应该就是深复制,浅复制的问题吧。
我用下面的代码试了一下,认为应该是直接复制了内存过来。
#include <stdio.h>
#include <malloc.h>
typedef struct _ss1
{
int a;
int b;
}ss1;
typedef struct _ss2
{
ss1 asd;
int c;
}ss2;
typedef struct _ss3
{
ss1 qwe;
int d;
}ss3;
int main()
{
ss2 *bb2 = (ss2 *)malloc(sizeof(ss2));
bb2->asd.a = 12;
bb2->asd.b = 21;
bb2->c = 121;
ss3 *bb3 = (ss3 *)malloc(sizeof(ss3));
bb3->qwe = bb2->asd;
bb3->d = 34;
printf("%d\n", bb3->qwe.a);
printf("%d\n", bb3->qwe.b);
bb2->asd.a = 45;
bb2->asd.b = 54;
//free(bb2);
printf("%d\n", bb3->qwe.a);
printf("%d\n", bb3->qwe.b);
return 0;
}