在c中使用指针时出现分段错误(核心转储)

时间:2017-03-03 22:43:29

标签: c pointers

我正在处理一个项目并尝试执行下面给出的类似操作,但是会出现分段错误错误。我不明白它为什么会出现这个错误,即使我使用malloc分配了内存。任何有关此错误的帮助都表示赞赏。

#include <stdio.h>  
 struct hello{  
  int i;  
};  
struct proc{  
  int j;  
  struct hello *hello[20];  
};  
int main()
{  
struct proc *proc;

proc->hello[0] = malloc(sizeof(struct hello));
proc->hello[0]->i =10; 

printf("value of i: %d\n",proc->hello[0]->i);

return 0;
}

1 个答案:

答案 0 :(得分:1)

最佳做法是将变量名称与其输入分开。

所以

struct proc *proc;

我会推荐像

这样的东西
struct proc *my_proc;

但是,你出现错误的原因是你在分配任何内存之前试图访问你的* proc。

它可能是NULL,但更可能的是,它包含一个值的内存地址,该值等于剩余的内存占用你应该存储内存地址的空间。

所以我们假设它是NULL然后你编程的是

Start Program
Give me a pointer at NULL
Go to NULL and malloc
-- SEG FAULT-- 

你只需要malloc你的* proc

int NUM_PROC = 1;
struct proc *my_proc = malloc(sizeof(struct proc) * NUM_PROC);