I get a segmentation error when I try to free memory. Any ideas. thanks
Code:
char **** allocate_memory (char ****array)
{
int i,j,k;
if( (array = (char ****) calloc(2500,sizeof(char***))) == NULL)
{
printf("no memory");
return(0);
}
for( i = 0; i <2000; i++)
{
if ((array[i] = (char ***) calloc(5, sizeof(char**))) == NULL)
{
printf("no memory");
return(0);
}
for( j = 0; j < 5; j++)
{
if ((array[i][j] = (char **) calloc(45, sizeof(char*))) == NULL)
{
printf("no memory");
return(0);
}
for( k = 0; k < 45; k++)
{
if ((array[i][j][k] = (char *) calloc(8, sizeof(char))) == NULL)
{
printf("no memory");
return(0);
}
}
}
}
return ((char ****) array);
}
void freearrays( char ****array)
{
int i, j,k;
for (i = 0; i < 2500;i ++)
{
for(j = 0; j < 5; j ++)
{
for (k = 0; k < 45; k++);
free(array[i][j][k]);
free(array[i][j]);
}
free(array[i]);
}
free(array);
}int main (int argc, const char * argv[]) {
// insert code here...
// char line[1000], listname[50], tmp[1024];
int i4, i5, m;
int i,j,k;
char filename[50];
FILE *fp; //, *action;
/* if (atoi (argv[0]) == 0)
{
printf("you forgot the date\n");
return(0);
}
*/
Caverages = allocate_memory((char****)Caverages);
Paverages = allocate_memory((char****)Paverages);
freearrays((char ****)Paverages);
freearrays((char ****)Caverages);