0

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

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

4

1 回答 1

1

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

于 2012-10-27T01:25:15.773 回答