【发布时间】:2012-09-26 10:59:20
【问题描述】:
完成我的任务,another question 中的更多详细信息。如果我使用
arr[(i * 16) % arrLen] *= 2; // seg fault
对比
arr[i % arrLen] *= 2; // OK!
为什么? Full source 见第 31 行。为什么?我对数组长度取模,所以应该没问题?
【问题讨论】:
-
他们会给你 2 个不同的地址 - 第一个可能无效?
-
溢出是一种失败模式,它产生负数。
-
您在 32 位环境中(例如 x86)吗?我在我的 x64 机器上尝试了您的代码,但没有收到任何错误。所以,Hans Passant 和 Alexey Frunze 似乎是对的。
标签: c