变量可以在设置之前使用

时间:2015-08-21 18:32:28

标签: c memory-management initialization malloc

我得到"变量可以在被设置之前使用"当我创建指向结构example *e的指针时。如果我使用变量example e,我没有收到错误。这是因为我还没有为指针分配内存吗?

typedef struct example {
    int a;
}example;

void test (){

    example *e;
    e->a=1;
    printf_all("val %d",e->a);
}

2 个答案:

答案 0 :(得分:5)

指针具有不确定的值。结果该程序具有未定义的行为。

您应该为要写入数据的example类型的对象分配内存。例如

example *e = malloc( sizeof( *e ) );
e->a = 1;

在这种情况下,你应该在不再需要内存时释放内存。

或者

example obj;
example *e = &obj;
e->a = 1;

答案 1 :(得分:4)

e并未指向任何内容。您正在使用未初始化的指针。你"设置"通过无效指针,然后尝试访问它。

您的指针应指向example实例。例如:

example exampleInstance;
example * examplePointer = &exampleInstance;
相关问题