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 :
je peux l'utiliser par exemple comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } //
le prblème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; // ...... } //
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.
Partager