关于多维数组动态内存分配
程序运行一半就崩溃了,电脑也会卡住,动态内存分配也会不够吗?#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
double **a;//定义92*92A区各点最短路径
double ****var;//定义各种分配方案时的方差
int *****set;//定义各种方案时各点的最近站台
double *****rate;//定义各种方案下24个服务台发案率
FILE *fp1;
int i,j,k,l,m,t;
a=(double **)malloc(sizeof(double *)*92);
for(i=0;i<92;i++)
{
a[i]=(double *)malloc(sizeof(double)*92);
}
var=(double ****)malloc(sizeof(double ***)*69);
for(i=0;i<69;i++)
{
var[i]=(double ***)malloc(sizeof(double **)*92);
for(j=0;j<69;j++)
{
var[i][j]=(double **)malloc(sizeof(double *)*92);
for(k=0;k<69;k++)
{
var[i][j][k]=(double *)malloc(sizeof(double )*92);
for(l=0;l<69;l++)
{
var[i][j][k][l]=0.00;
}
}
}
}
set=(int *****)malloc(sizeof(int ****)*69);
printf("\n333");
for(i=0;i<69;i++)
{
set[i]=(int ****)malloc(sizeof(int ***)*92);
for(j=0;j<69;j++)
{
set[i][j]=(int ***)malloc(sizeof(int **)*92);
for(k=0;k<69;k++)
{
set[i][j][k]=(int **)malloc(sizeof(int *)*92);
for(l=0;l<69;l++)
{
set[i][j][k][l]=(int *)malloc(sizeof(int )*92);
for(m=0;m<92;m++)
{
set[i][j][k][l][m]=0;
}
}
}
}
}
rate=(double *****)malloc(sizeof(double ****)*69);
for(i=0;i<69;i++)
{
rate[i]=(double ****)malloc(sizeof(double ***)*92);
for(j=0;j<69;j++)
{
rate[i][j]=(double ***)malloc(sizeof(double **)*92);
for(k=0;k<69;k++)
{
rate[i][j][k]=(double **)malloc(sizeof(double *)*92);
for(l=0;l<69;l++)
{
rate[i][j][k][l]=(double *)malloc(sizeof(double )*92);
for(m=0;m<24;m++)
{
rate[i][j][k][l][m]=0.00;
}
}
}
}
}
fp1=fopen("D:\\2011B\\distance.txt","r");
if(fp1==0)
{
printf("can not open file\n");
exit(1);
}
while(!feof(fp1))
{
for (i=0;i<92;i++)
{ for(t=0;t<92;t++)
{
fscanf(fp1,"%lf",&a[i][t]);
}
}
}
printf("a[3][90]=%f\n",a[3][90]);
for(i=0;i<92;i++)
{
free(a[i]);
}
for(i=0;i<69;i++)
{
for(j=0;j<69;j++)
{
for(k=0;k<69;k++)
{
free(var[i][j][k]);
}
}
}
for(i=0;i<69;i++)
{
for(j=0;j<69;j++)
{
for(k=0;k<69;k++)
{
for(l=0;l<69;l++)
{
free(set[i][j][k][l]);
}
}
}
}
for(i=0;i<69;i++)
{
for(j=0;j<69;j++)
{
for(k=0;k<69;k++)
{
for(l=0;l<69;l++)
{
free(rate[i][j][k][l]);
}
}
}
}
free(rate);
free(set);
free(var);
free(a);
fclose(fp1);
return 0;
}