gpt4 book ai didi

c - ubuntu gcc 中的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:36 25 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
char *ch;
int n=10;
gets(ch);
puts(ch);
printf("%d\n",n);

}

#include<stdio.h>
int main()
{
char *ch;
int n=10;
gets(ch);
printf("%d\n",n);
puts(ch);

}

在第一个中,段错误发生在 print(n) 处,而在第二个中,段错误发生在 puts(ch) 处。如果在声明 n 之后也使用 print(n) 则不会发生错误。

最佳答案

gets() 取消引用一个未初始化的指针,导致 undefined behaviour .

ch 分配内存并且不使用 gets()因为无法限制读取的字符数,这意味着可能会超出目标数组的范围进行写入。

示例使用 fgets() :

char ch[128];
if (fgets(ch, 128, stdin))
{
}

关于c - ubuntu gcc 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17306608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com