簡體   English   中英

C malloc 分段錯誤結構

[英]C malloc segmentation fault struct

在我老師提供給我們的教科書中,有這個 C 代碼的示例,當我嘗試運行時會出現 Segmentation Fault 錯誤:

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 返回一個空指針然后轉換是應該使用一個指針類型的變量一個例子:

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

然后你可以取消引用指針,例如

l->data = 12;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM