c - 如何释放指向字符串指针的指针



我想知道如何释放包含指针的结构。

struct tree {
    struct tree *p;
    char name[NAME];
    char *relation_name[RELATION];
    struct tree *left;
    struct tree *right;
};

我想知道如果我释放结构*relation_name[RELATION]会发生什么。 *relation_name[RELATION]指出了一些与malloc()分配的刺痛。我应该释放所有*relation_name[RELATION]然后释放结构吗?或者如果我释放结构,所有内容都会从我的内存中删除?

规则是:每个malloc()(或calloc()realloc()(必须有一个对应的free()

因此,在您的情况下,您必须在整个结构之前free()字符串。

假设你做这样的事情

struct tree{
    struct tree* p;
    char name[NAME];
    char *relation_name[RELATION];
    struct tree* left;
    struct tree* right;
};
struct tree *x = malloc(42 * sizeof *x);
//               ^^^^^^^^^^^^^^^^^^^^^^
for (int k = 0; k < 42; k++) {
    for (int i = 0; i < 10; i++) x[k].relation_name[i] = malloc(100);
//                                                       ^^^^^^^^^^^
}

何时需要释放所需的资源以扭转该过程

for (int k = 0; k < 42; k++) {
    for (int i = 0; i < 10; i++) free(x[k].relation_name[i]);
//                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
free(x);

相关内容

  • 没有找到相关文章

最新更新