大家好. 我對於電腦記憶體的理解不多. 只是常聽說要避免記憶體碎片化.
所以就學了以下語法要一塊連續記憶體去配製一個陣列. 但是當陣列太大時.
譬如50*50*50 的 double array 執行時就發生segmentaion fault. 請大家指教我哪裡做錯想錯了.
謝謝大家.
#include <stdlib.h>
#include <stdio.h>
int main() {
double ***array;
double **ppData;
double *pData;
int l=50;
int m=50;
int n=50;
int i,j,k;
array = (double ***)calloc(l*m*n, l*sizeof(double **) + l*m*sizeof(double *) +
l*m*n*sizeof(double));
ppData = (double **) (array+l);
pData = (double *) (array+l+l*m);
for(i=0; i < l; i++)
{
array[i]=ppData;
ppData+=m;
for(j=0; j < m; j++)
{
array[i][j]=pData;
pData+=n;
}
}
for(i=0; i<l; i++)
for(j=0; j<m; j++)
for(k=0; k<n; k++)
printf("(%d, %d, %d)=%f\n", i,j,k,array[i][j][k]);
free(array);
return 0;
}