#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ab
{
int *a1;
int cnt1;
};
ab AB;
ab plus(int *a,int cnt)
{
int *b = (int*)malloc(sizeof(int)*3);
for(int i=0;i<3;i++)
{
b[i] = a[i];
}
cnt++;
AB.a1 = b;
AB.cnt1 = cnt;
return AB;
}
void main()
{
int cnt=0;
int *a;
a = (int*)malloc(sizeof(int)*3);
memset(a,0,sizeof(int)*3);
a[0] = 1;
a[1] = 2;
a[2] = 3;
AB = plus(a,cnt);
AB.a1=a;
free(a); //问题:在这个地方,我只是想把主函数的a 释放掉,但是调试显示struct ab中的a1变量同时被释放了 而且之后我试图对a再次分配空间然后初始化,结果发现struct ab.a1 也被初始化了
//为什么啊???我明明没有对struct里的变量操作啊???
for(int i=0;i<3;i++)
{
printf("%d",AB.a1[i]);
}
printf("%d",AB.cnt1);
// printf("")
}