总线错误:10有更多索引

时间:2012-04-28 10:01:17

标签: c++ arrays bus-error

我正在使用6个整数数组,每个数组包含256个元素。相当标准,我想。

我面临的问题是当我初始化所有这些数组为0时,我得到一个总线错误:10。每次都在循环的第240次迭代中。

这是我的头文件......

class histEqImage {
private:
int histogramR[256];
int histogramG[256];
int histogramB[256];

int dashR[256];
int dashB[256];
int dashG[256];

void initHistograms();    
public:
//Other declarations here...
};

这就是问题发生在......的功能

void histEqImage::initHistograms() {
//Ensure all the values in the histogram are at 0.
for(i = 0; i <256; i++) {
    histogramR[i]= 0;
    histogramG[i] = 0;
    histogramB[i] = 0;
    dashR[i] = 0;
    dashG[i] = 0;
    dashB[i] = 0;
}
}

所以每当我到达我的代码的这一部分时,程序崩溃,在i = 240。抱歉,为了更好地指定,它会发生在dashB[i] = 0;

令我烦恼的是,我无法看到我的阵列超出界限的范围,而且我在动态记忆方面并没有超越我的理解力。

任何帮助都会有所帮助。

1 个答案:

答案 0 :(得分:1)

由于histEqImage pictureDisplay的大小为6 KB(假设为32位int s),因此对于堆栈上的分配来说可能太大了。尝试将其移到main之外,或动态分配。

如果您将声明移到main之外,请将其设置为静态以避免全局可见。

static histEqImage pictureDisplay;

int main(int argc, char *argv[]) {
    //...
}