我已经在这个问题上研究了很长时间了,似乎无法在任何地方找到答案。这个问题非常简单,我得到了一个示例程序,并要求纠正错误(这是大学的一项家庭作业问题)。
这是C语言中的程序:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int a;
char *b;
} Cell;
void AllocateCell(Cell * q)
{
q =(Cell*) malloc (sizeof(Cell));
q->b = (char*)malloc(sizeof(char));
}
int main (void)
{
Cell * c;
AllocateCell(c);
c->a = 1; // Produces Seg Fault
free(c);
return 0;
}
细分错误由以下行产生:
c->a = 1;
很明显,seg错误来自内存分配的某些部分,但是我不确定从哪里来。