Monday, 19 August 2013

C for loop segmentation fault

C for loop segmentation fault

I am getting a segmentation fault error when I try to compile this code on
gcc.
#include <stdio.h>
#include <stdlib.h>
#define N_TIMES 600000
#define ARRAY_SIZE 10000
int main (void)
{
double *array = calloc(ARRAY_SIZE, sizeof(double));
double sum = 0;
int i;
double sum1 = 0;
for (i = 0; i < N_TIMES; i++) {
int j;
for (j = 0; j < ARRAY_SIZE - 1; j += 20) {
sum += array[j] + array[j+1] + array[j+2] + array[j+3] +
array[j+4] + array[j+5] + array[j+6] + array[j+7] + array[j+8]
+ array[j+9];
sum += array[j+10] + array[j+11] + array[j+12] + array[j+13] +
array[j+14] + array[j+15] + array[j+16] + array[j+17] +
array[j+18] + array[j+19];
}
sum += array[ARRAY_SIZE];
}
sum += sum1;
return 0;
}
I'm trying to speed up a for loop as much as I can so I am trying crazy
things. How do I get rid of the segmentation fault? Also should I try a
different method of optimization?

No comments:

Post a Comment