Fonction Deallocate tableau 4D
Bonjour,
en ce moment je travaille sur un programme de calcul scientifique qui utilise beaucoup de tableaux à 4 dimensions , alors au lieu "d'alloquer" chaque fois un tableau et répéter le code, j'ai construit une fonction qui fait l'allocation dynamique de tableux 4D; c'est la suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
#include <stdlib.h>
float ****AllocfloatTab4D(int dim1, int dim2, int dim3, int dim4)
{
int i, j, k;
float ****p;
if ((p = (float ****)malloc(dim1*sizeof(float ***))) == NULL)
return NULL;
for (i = 0; i < dim1; i++) {
if ((p[i] = (float ***)malloc(dim2*sizeof(float **))) == NULL)
return NULL;
for (j = 0; j < dim2; j++)
if ((p[i][j] = (float **)malloc(dim3*sizeof(float *))) == NULL)
return NULL;
for (k = 0; k < dim3; k++)
if ((p[i][j][k] = (float *)malloc(dim4*sizeof(float ))) == NULL)
return NULL;
}
return p;
}
// |
je peux l'utiliser par exemple comme ça :
Code:
1 2 3 4 5 6 7 8 9
|
int main()
{
float ****tab;
if ((tab = AllocfloatTab4D(10, 15, 20, 25)) != NULL)
tab[5][7][0][3] = 0;
// ......
}
// |
le prblème :
1- est ce que la fonction est correcte?
2- comment faire la fonction inverse " DeallocfloatTab4D" qui d'aprés son nom fait le travail inverse c-à-d libérer la mémoire allouer par la fonction "AllocfloatTab4D" ?
merci d'avance.