malloc d'un double tableau
Forum Programmation : malloc d'un double tableau
Bonjour comment fait on pour malloquer un double tableau en c. (tab[][]). merci.
Tu peux malloquer ta premiere dimension, puis tu parcours la deuxieme en mallocant au fur et a mesure...
tab[1][2]
tu fait malloc tab[1] avec la taille du nombre de [2]
ca l'alloue a une case de memoire
apres tu fait une boucle qui va parcourir les [1] et allouer la taille des [2]
attend jvai rechercher direct du code c + simple en + me suis ptet gourrer ca fait longtemp
double **tab;
tab = (double**)malloc( taille*sizeof(double*) );
for (i=0 ; i<taille ; i++)
{
*(tab+i) = (double*)malloc( taille2*sizeof(double) );
}
tu peux faire la même chose avec des new ....
pr libérer la mémoire :
for (i=0;i<taille;i++)
{
free(*(tab+i));
}
free(tab);
Balancer ça avec des pointeurs pour qq'un qui connait pas les tab à 2 dimensions, c hard ! Mais c sûr qu'on apprend mieux de cette façon...
Et y'a une p'tite erreur, la première ligne :
double ** tab;
Pq il ne connaitrais pas les pointeurs?
| Citation :
|
c'est corrigé ;-)
utiliser malloc sans connaitre les pointeurs de toute facon ...
Non, je dis qu'il connait pas les tableaux à 2 dimensions. Et si tu connais pas ça, y'a peu de chance que tu connaisses les pointeurs vu que c avec ces tableaux que tu apprends le mieux... C tout
si je connai les pointeurs, et aussi les tableaux a deux dimension le seul probleme cest que je sait pas allouer la memoire suiffisante dans un tableau a double dimension quand on connait pas le nombre delements.
A ce moment là, y'a du boulot... Il faut redimensionner tes tableaux au fur et à mesure que tu ajoutes les éléments style :
ajout en x : (tab[x][y])
int **tab;
int taille = tailleDeTonTabDorigine;//taille de tab[] quoi...
// First we copy the old tab
int**tab2 = (int**)malloc(sizeof (int*)*nbVoulu);
for(int i=0; i<taille ; i++) {
tab2[i] = tab[i];
}
//là tu ajoutes tes nouvelles lignes en Y
tab[taille+1] = malloc...
tab[taille+2] = malloc...
free (tab); //là faut faire gaffe qu'il supprime pas les lignes (y), vérifie ça je suis pas sûr
tab = tab2;
Et Ajout en y :
Là il faut faire une boucle for sur le nombre de ligne, faire une autre boucle for sur le nombre d'élément. Ensuite tu copies les éléments de l'ancienne ligne dans une nouvelle ligne (que tu auras créé avec la bonne taille).
ok cest chaud quand meme je vait voir se que je peux faire merci.
c'est vrai ue redimensionner un tableau en cours de route c'est pas évident ... pour faire simple , tu alloue un tableau avec une taille suffisante, en sachant qu'une partie ne sera pas utilisée ..
enfin faut voir ce que tu veux faire ;-)
Ou utiliser 'realloc'...
Il y a 375 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
