0
我想知道在创建seg故障的背景中发生了什么。这段代码为什么会创建seg故障?
char *ptr;
fgets(ptr, 200, stdin);
fprintf(stderr, "Ptr = %s\n", ptr);
感谢
我想知道在创建seg故障的背景中发生了什么。这段代码为什么会创建seg故障?
char *ptr;
fgets(ptr, 200, stdin);
fprintf(stderr, "Ptr = %s\n", ptr);
感谢
你从来没有分配给fgets
写送入太空。因此变量ptr
未初始化,并且解除引用会导致未定义的行为。发生段错误是因为该值碰巧指向不可用内存。
char *ptr = malloc(200);
Ptr是未初始化(可能是任何)变量。因此,fgets将数据转储到未知位置。繁荣。