C malloc 分段故障结构体



在老师提供给我们的教科书中,有这个 C 代码的示例,当我尝试运行时,它给出了一个分段错误:

const celula *nulo = NULL;
typedef char informacao;
typedef celula *noh;
typedef celula *arvore;
struct celula {informacao info; noh pai; noh fesq; noh idir;};
...
typedef struct celfloresta celfloresta;
typedef struct celfloresta *floresta;
typedef struct celfloresta *posicfloresta;
struct celfloresta {arvore elem; celfloresta *prox;};
...
void FormarListaNohs(){
floresta p = (floresta)malloc(sizeof(celfloresta));
p->elem->info = '3';
}
...

为什么这条线p->elem->info = '3';在这里给出分段错误?

elem是一个指针。您需要为其分配内存:

p->elem = malloc(sizeof(arvore));

基本上 malloc 返回一个 void 指针,然后强制转换应该使用指针类型的变量 一个例子 :

int *p = malloc(sizeof(int))
struct s_list *l = malloc(sizeof(struct s_list))

然后,您可以取消引用指针,例如

l->data = 12;

相关内容

  • 没有找到相关文章

最新更新