在结构指针内访问变量会在运行时产生分段错误-C

时间:2019-04-11 04:39:19

标签: c pointers struct dynamic-memory-allocation

我已经在这个问题上研究了很长时间了,似乎无法在任何地方找到答案。这个问题非常简单,我得到了一个示例程序,并要求纠正错误(这是大学的一项家庭作业问题)。

这是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错误来自内存分配的某些部分,但是我不确定从哪里来。

0 个答案:

没有答案