我正在处理一个项目并尝试执行下面给出的类似操作,但是会出现分段错误错误。我不明白它为什么会出现这个错误,即使我使用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;
}
答案 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);