gpt4 book ai didi

c - 段错误 : arr[(i * 16) % arrLen] vs arr[i % arrLen]

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:05 24 4
gpt4 key购买 nike

正在处理我的作业,更多详情请参阅 another question .如果我使用

arr[(i * 16) % arrLen] *= 2; // seg fault

对比

arr[i % arrLen] *= 2; // OK!

为什么? <强> Full source 见第 31 行。为什么?我对数组长度取模,所以应该可以吗?

最佳答案

i * 16 可以溢出到有符号整数的负数范围内。当您取负整数的模数时,您可以获得负余数,这将使您的数组下标为负,并导致在数组分配的内存之外进行访问,有时会导致崩溃。

关于c - 段错误 : arr[(i * 16) % arrLen] vs arr[i % arrLen],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com