我是C语言的新手,我对分配内存有疑问。因此,我在下面尝试了应释放结构elem1的这段代码。
struct elem{
char *data1;
char *data2;
};
int main()
{
struct elem *elem1 = malloc(sizeof(struct elem));
elem1->data1 = "abc";
elem1->data2 = "def";
char *a = elem1->data1;
char *b = elem1->data2;
free(elem1);
printf("%s\n%s\n",a,b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该代码可以很好地编译并返回,
abc
def
Run Code Online (Sandbox Code Playgroud)
我希望它会失败,因为免费还应该释放其成员的记忆。但是为什么行得通呢?释放结构后,如果我想访问结构的成员该怎么办?