我正在使用GCC +終端製作一組素數。用24 +位索引數組在macbook pro上得到段錯誤
我曾經問過上#[email protected],但我還是不明白:
int可以存儲32位的值(因此總共2^32個的唯一值),但不能有一個數組超過2^24的值?
我不確定,但是Why 24 bits registers?已經回答了我的問題?
這是否意味着製作一個long int
的數組不能解決問題?是否有一些(比例較快)的方式可以繞過這個問題,比如使用int[][]
來存儲這些數字?或者也許包含或lib使用任意數量的字節來存儲數字?
int main()
{
int array1[160000];
printf("first array declared fine.\n");
int array2[170000];
int array3[1600000];
printf("first array declared fine.\n");
int array4[1700000];
int array5[16000000];
printf("first array declared fine.\n");
int array6[17000000];
}
我不那麼舒服你想做什麼。 但數組應該沒有問題來保存超過2^24的值。 (只有大約1600萬個元素) 也許你可以舉一個例子代碼? – nuriaion 2010-06-23 09:47:31
你在棧上創建數組嗎?如果是這樣,堆棧溢出可能會導致段錯誤。 – Job 2010-06-23 09:53:11
你的數組有多少個元素?分段故障發生在哪個索引?你能否顯示代碼的違規區域? – vpit3833 2010-06-23 10:06:29