我正在使用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;
行
令我烦恼的是,我无法看到我的阵列超出界限的范围,而且我在动态记忆方面并没有超越我的理解力。
任何帮助都会有所帮助。
答案 0 :(得分:1)
由于histEqImage pictureDisplay
的大小为6 KB(假设为32位int
s),因此对于堆栈上的分配来说可能太大了。尝试将其移到main
之外,或动态分配。
如果您将声明移到main
之外,请将其设置为静态以避免全局可见。
static histEqImage pictureDisplay;
int main(int argc, char *argv[]) {
//...
}