Salut à tous,
Je fais un prog C de calcul de produit matriciel (C = A*B) où je dois faire une allocation de mémoire dynamique, j'ai fait le code C suivant:

...

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
22
#define LG 512
double **A, **B, **C;
int i, j, k;
 
  //allocation de mémoire pour les tableaux
 
      A = (double**)malloc(LG*sizeof(double*));
      B = (double**)malloc(LG*sizeof(double*));
      C = (double**)malloc(LG*sizeof(double*));
 
      for(i=0; i<LG; i++){
         A[i] = (double*)malloc(LG*sizeof(double));
         B[i] = (double*)malloc(LG*sizeof(double));
         C[i] = (double*)malloc(LG*sizeof(double));
      }
 
      //initialisation des tableaux A et B
      ...
 
      //calcul du produit matriciel C=A*B
      produit_matriciel(A, B, C, LG);
     ...
Mon souci se situe au niveau du malloc. Celui que j'ai fais marche très bien, mais le problème c'est que j'ai fais 3 allocations de mémoire dynamique pr les trois tableaux, alors que j'ai la contrainte de n'en faire qu'un seul malloc pour les trois tableaux n*n.

Est ce que qlq saurai cmt procédé pr n'effectuer qu'un seul malloc (pr l'ens des trois tableaux), et faire commencer chacun des tableaux à un offset différent?

Merci pour votre aide

balises [code] rajoutées par khayyam90 - merci d'y penser à l'avenir