Ton problème vient du fait que double** déclare en fait un pointeur de pointeur sur des doubles.
C'est pour cela qu'en choisissant cette structure, tu es obligé d'allouer (puis de désallouer) séparemment chaque ligne de ta matrice, comme le fait Higestromm.
Les seuls avantages de cette structure sont:
-la syntaxe d'un acces: p[i][j], mais 2 accès mémoire (pour les 2 pointeurs)
-la rapidité pour échanger les lignes, qui nécessite en fait d'interchanger des pointeurs.
On croise souvent la structure précédente, mais il faut préférer l'allocation suivante, qui alloue d'un seul coup la matrice:
double *p=new double[M*N] ;
Il faut accéder aux éléments de la manière suivante un peu moins intuitive mais plus rapide pour le processeur (1 seul accès mémoire + instructions spéciales du processeur)
Le mieux consiste néanmoins à manipuler les matrices par une classe dédiée, que tu peux écrire toi même ou trouver dans une bibliothèque. Tu n'auras plus alors à t'occuper des détails tels que l'allocation.
Le choix de la bibliothèque dépendera de tes besoins.
Partager