我想找个“工会”。
这是我的代码:

UnionFind uf_create(){
    UnionFind uf= malloc(sizeof(UnionFind));
    uf->vt=malloc(11*sizeof(VertexTree*));
    uf->nbElems=VERTEX_MAX;
    uf->nbGroups=VERTEX_MAX;
    int i;
    for(i=0;i<uf->nbElems;i++){
        printf("%d\n", i);
        uf->vt[i]->vtx=i+1;
        uf->vt[i]->parent=uf->vt[i];
    }
    return uf;
}

UnionFind的定义如下:
typedef struct unionfind{
    unsigned int nbElems;
    unsigned int nbGroups;
    VertexTree **vt;
}*UnionFind;

这是树的定义:
typedef struct sTree{
    GraphVertex vtx;
    struct sTree* parent;
}VertexTree;

我知道segfault是因为树的分配不正确。
有人能告诉我如何为顶点树正确分配内存吗?
感谢

最佳答案

UnionFind uf= malloc(sizeof(UnionFind));
我想这是你的问题所在。。
UnionFind是指针类型,因此sizeof将只返回计算机指针的大小。
尝试:
UnionFind uf= malloc(sizeof(struct unionfind));
这将返回结构的实际大小。

10-04 20:20