2012-04-28 31 views
1

我使用6個整數的數組,每個保存256個元素。相當標準,我想。總線錯誤:10與更多索引去

我面臨的問題是,當我初始化所有這些數組爲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

您能否顯示分配代碼?你正在使用'new []',對吧? – dasblinkenlight 2012-04-28 10:06:27

+0

這些只是簡單的數組,根本沒有分配。 – 2012-04-28 10:08:14

+0

不,我的意思是'histEqImage',你將它分配給堆棧,動態還是作爲數組的一部分? – dasblinkenlight 2012-04-28 10:09:10

回答

1

由於histEqImage pictureDisplay的大小爲6 KB(假設32位int s),因此它可能太大而無法在堆棧上分配。嘗試將它移動到main之外,或者動態分配它。

如果您將該聲明移到main之外,請將其設置爲靜態以避免全局可見性。

static histEqImage pictureDisplay; 

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

將聲明移到主函數之外並將其變爲靜態似乎已經成功了。我不知道有多大的物品可以在堆棧上有限制,感謝您的幫助。 – 2012-04-28 10:25:19