为什么这段代码会产生seg错误?

时间:2014-10-26 22:20:55

标签: pointers segmentation-fault

我想知道在后台发生了什么导致了seg故障。

char *ptr;
fgets(ptr, 200, stdin);
fprintf(stderr, "Ptr = %s\n", ptr);

由于

2 个答案:

答案 0 :(得分:2)

您从未为fgets分配空间来写入。因此变量ptr未初始化,并且取消引用它会导致未定义的行为。发生了段错误,因为该值恰好指向不可用的内存。

char *ptr = malloc(200);

答案 1 :(得分:0)

Ptr是一个未初始化的(可能是任何东西)变量。因此fgets将数据转储到未知位置。吊杆。