所以,我有这个代码.
void main(void){
int n = 9999;
int *array = calloc(n, sizeof(int));
int i, j;
// Populate array up to N
for(i = 0; i < n; i++){
array[i] = 2 + i;
}
// Run sievs
sievs(array, n);
print_prime(array, n);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果N足够大,程序将核心转储.我的理论是在堆栈上分配了一些东西,并且它不足以容纳那么多数据,但是我使用的是calloc,所以它应该是heep.
这两个打印函数看起来像这样:
void print_prime(int *a, int n){
int i;
for (i = 0; i < n; i++){
if(a[i] != -1)
printf("Prime: %d \n", a[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何此代码导致它?我不明白为什么.
这是siev功能:
void sievs(int *array, int n){
int i, j;
for(i = …Run Code Online (Sandbox Code Playgroud)