use*_*000 1 c malloc memory-management initialization
创建指向结构的指针时,出现“在设置变量之前可以使用变量”的信息example *e。如果我改用变量example e,则不会收到错误消息。这是因为我没有为指针分配内存吗?
typedef struct example {
int a;
}example;
void test (){
example *e;
e->a=1;
printf_all("val %d",e->a);
}
Run Code Online (Sandbox Code Playgroud)
指针的值不确定。结果,程序具有不确定的行为。
您应该为example将要写入数据的类型的对象分配内存。例如
example *e = malloc( sizeof( *e ) );
e->a = 1;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当不再需要内存时,您应该释放它。
要么
example obj;
example *e = &obj;
e->a = 1;
Run Code Online (Sandbox Code Playgroud)
e不指向任何东西。您正在使用未初始化的指针。您通过无效指针“设置”,然后尝试访问它。
您的指针应该指向一个example实例。例如:
example exampleInstance;
example * examplePointer = &exampleInstance;
Run Code Online (Sandbox Code Playgroud)