小编Far*_*a H的帖子

释放C中的结构还会删除其成员吗?

我是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)

我希望它会失败,因为免费还应该释放其成员的记忆。但是为什么行得通呢?释放结构后,如果我想访问结构的成员该怎么办?

c malloc free

0
推荐指数
2
解决办法
122
查看次数

标签 统计

c ×1

free ×1

malloc ×1