[英]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.