Bonjour,
Je poste ce message au cas où un oeil neuf remarque quelque chose qui m'a échappé.
Je travaille sur un programme qui effectue des calculs sur des matrices de complexes. L'ensemble de mes fonctions de calculs fonctionnent parfaitement, sauf une qui me fait l'erreur suivante :
"Le projet **** a déclancher la classe d'exception EAccessViolation avec le message "Violation d'accès"."
La fonction renvoyant cette erreur fonctionne très bien puisqu'elle a été appelée de nombreuses fois auparavant. J'ai pensé à un paramètre mal passé mais ils sont tous correct (l_1=l_2=1 et c_1=c_2=5).
Le programme est pour l'instant une fenêtre DOS qui utilise environ 2 Mo de mémoire d'après le gestionnaire Windows (le système en possédant 2Go). Je programme sous C++ Builder 2007 version entreprise qui ne donne pas plus d'information sur l'erreur.
fcomplex : structure définissant un nouveau type qui est composé de 2 double (partie réelle et partie imaginaire)
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 extern fcomplex** Cadd_mat (fcomplex **mat1, int l_1, int c_1, fcomplex **mat2, int l_2, int c_2) { int i, j; fcomplex **res; res = Callocation_dynamique(l_1, c_1); // Allocation dynamique matrice // Verification des dimensions des matrices, si les dimensions sont differentes le calcul est impossible. if (l_1 != l_2) { printf("Dimensions incorrectes : nombres de lignes different"); exit(EXIT_FAILURE); } if (c_1 != c_2) { printf("Dimensions incorrectes : nombres de colonnes different"); exit(EXIT_FAILURE); } else // Si dimension identique : { for (i = 0; i < l_1; i++) { for (j = 0; j < c_1; j++) { res[i][j] = Cadd(mat1[i][j], mat2[i][j]); // Ligne indiquant l'erreur } } } return res; } extern fcomplex Cadd(fcomplex a, fcomplex b) { fcomplex c; c.r = a.r + b.r; c.i = a.i + b.i; return c; }
Partager