我偶然发现了一个持续存在的问题,似乎没有合理的解释。问题似乎出在一个 for 循环中,该循环的for (i = size - 1; i >= 0; i--) {etc.}
位置size
是存储在内存缓冲区中的文件的大小,并且i
是一个无符号整数。而不是停止 when i == 0
,它环绕 - 从而导致i = 4294967295
并导致分段错误。改变条件来i > 0
解决问题。
不过,这样不是很奇葩吗?我一定错过了 for 循环如何在 C 中运行的一些关键部分。它不遵循这个方案:初始化、检查条件、递增/递减、检查条件等等?
任何帮助表示赞赏!