我需要像这样存储一个 hist 变量,它位于 p 和 bin 的循环中,
hist[p][bin] = hist[p][bin] + 1;
当我评论这一行时,代码有效(验证了 p 和 bin 变量打印)。但是,当我包含这一行时,程序会因段错误而终止。进一步检查 bin 变量给我一个巨大的负整数( -214733313 ),这会导致段错误。当我注释这一行并且 bin 变量是正常整数时,程序正常运行。我在这里错过了一件明显的事情吗?
谢谢
最佳答案
如果你得到 -2147...你基本上就达到了有符号整数的最大大小,或 2^31 -1(32 位,4 字节,C int)。
如果我们假设这一点,那么可以肯定地说您正在访问 $FFFFFFFF 所在的内存。我只在未分配的、通常是随机的内存中看到过这种情况。可以安全地假设你的要求超出了范围。您可以将 hist[p][bin] 设置为数组的最大内存,加 1 就会超出范围。
关于c - 二维数组增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765735/