我正在读吉姆·特雷弗的“旋风:一个安全的C方言”。全部用于编程语言类。作者说,如果调用getc(null),它可能导致分段错误--因为C标准没有指定如何处理该操作。我对C是新手,我不明白为什么会这样。是否认为getc可能返回指向错误内存地址的指针(因为getc(null)的行为不可预测)?对我来说,这似乎不像是一个安全风险,因为C会期望getC中的字符文字(而不是指向某个字符的指针)。
是否担心从getc返回的字符可能包含一个有效的指针值,然后分配给指针并用于访问不安全的内存区域?或担心getc会导致分段错误(而不是调用函数)。
发布于 2012-10-27 01:25:15
我还没有读过GNU C库源代码(但我读过'info getc'),但是您应该传递一个指向getc的指针。如果您传递的指针是空指针,getc可能会尝试对其进行读/写,就好像它是一个有效的指针一样,这将产生一个分段错误。
https://stackoverflow.com/questions/13096401
复制相似问题