Jie*_*eng 1 c
处理我的任务,在另一个问题中处理更多细节.如果我使用
arr[(i * 16) % arrLen] *= 2; // seg fault
VS
arr[i % arrLen] *= 2; // OK!
为什么?完整来源见第31行.为什么?我模数组的长度,所以应该没问题?
Ale*_*nze 5
i * 16可以溢出到有符号整数的负范围内.当你取一个负整数的模数时,你可以得到一个负余数,这将使你的数组下标为负数,并导致在数组的已分配内存之外的访问,有时会导致崩溃.
i * 16
归档时间:
13 年,2 月 前
查看次数:
137 次
最近记录: