c - 二维数组增量

标签 c arrays

我需要像这样存储一个 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/

相关文章:

c - 编译 lex 和 yacc 文件时出现大量错误

c - K&R 中边界有限的 qsort |排序过程不会在字符串中的下一个位置继续

c++ - 静态字符数组和指针内存

c# - 继承自 Array 类

C++ char 数组传递给函数

javascript - 按顺序合并两个奇数和偶数数组

java - 什么是缓存字符串?

c - VT100 数字键盘使用修饰符(ctrl/shift/alt)时的转义码

c - 如何在一个 do while 循环中同时运行三个 do while 循环?

C编程指针数组读取文件