[英]Why does referencing my large array crash my program?
当我运行我的程序时它只是崩溃了我一直在寻找大约一天的答案并且无法弄清楚我做错了什么。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int s=10000;
int i,j,temp;
int matrix[s][s];
clock_t start, end;
int cpu_time_used;
start=clock();
for(i=1; i<s; i++)
{
for(j=1; j<s; j++)
{
matrix[s][s];
}
}
end = clock();
cpu_time_used= ((int)(end-start));
printf("Total Time Used for Subscripting: %d\n",cpu_time_used);
return 0;
}
给定一个数组:
int a[N];
a 的范围是a
a[0]..a[N-1]
。
因此,在您的情况下, matrix[s][s]
的最大合法索引值为[s-1][s-1]
。
另一个可能的问题是本地存储的剪切大小,由于s==10000
,您在本地存储中有一个数组10000^2*sizeof(int)
,它可能比您为进程配置的堆栈大.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.