getc(null)如何生成分段错误?

时间:2012-10-27 01:21:43

标签: c posix

我正在阅读Jim Trevor et的 Cyclone:C安全方言。所有的编程语言课程。作者说如果你调用getc(null)它可能会导致分段错误 - 因为C标准没有指定如何处理这个操作。我是C的新手,不明白为什么会这样。是否认为getc 可能返回指向坏内存地址的指针(因为getc(null)的行为是不可预测的)?对我而言,它似乎不是一种安全风险,因为C期望来自getC的字符文字(不是指向字符的指针)。

是否担心从getc返回的字符可能包含一个有效的指针值,然后可以将其指定给指针并用于访问不安全的内存区域? 担心getc会导致分段错误(而不是调用函数)。

1 个答案:

答案 0 :(得分:1)

我还没有读过GNU C库的源代码(但我读过'info getc'),但你应该传递一个指向getc的指针。如果你传递的指针是一个空指针,getc 可能尝试读取/写入它,好像它是一个有效的指针,这会产生一个段错误。