我正在使用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