Je suis en train d'écrire 2 fonctions, l'une à l'allocation dynamique un tableau 2D, d'autres pour libérer ce tableau 2D:c- Allouer et gratuit 2D tableau
int allocate(int **array, unsigned int rows, unsigned int columns){
int i;
for (i = 0; i < rows; i++) {
array[i] = malloc(columns * sizeof (int));
}
/* Code fo fill the array*/
return 1;
}
void de_allocate(int **v, unsigned int rows) {
int i;
for (i = 0; i < rows; i++) {
free(v[i]);
}
free(v);
}
int main(int argc, char **argv) {
int rows, columns;
rows = atoi(argv[1]);
columns = atoi(argv[2]);
int *ipp[rows];
allocate(ipp, rows, columns);
de_allocate(ipp,rows);
return 0;
}
je dois respecter la signature de la fonction allouer:
int allocate(int **array, unsigned int rows, unsigned int columns)
Et à la fin de la fonction d'allocation, ipp doit avoir accès au tableau 2D attribué.
Allouer fonction, il est vrai, mais en fonction de_allocate i un SIGABRT signal
C'est * pas * un tableau 2D mais seulement une émulation de celui-ci. Ne faites pas qu'un tel code ne devrait être utilisé que dans un musée. Utilisez de véritables tableaux 2D. S'ils ont tendance à être gros, ne les allouez pas sur la pile et utilisez 'int (* ipp) [rows] = malloc (sizeof (double [lignes] [colonnes]))' allouer et 'free (ipp) 'pour le libérer et la fin. Aucune boucle for for n'est nécessaire. Ainsi, même vos fonctions ne serviraient plus à grand chose. –