Bonjour à tous.
J'ai un petit souci de compréhension autour du malloc. J'ai eu besoin de faire en C des tableaux en deux dimensions créés dynamiquement. J'ai utilisé un malloc (rien de bien méchant jusque là). Je n'ai pas eu de problème lors de l'exécution du code, et pourtant quelque chose me chagrine beaucoup : si je dimensionne un tableau de 10 x 10, je devrais avoir une erreur en voulant lire la case (11,1). Et pourtant je n'ai rien... alors je me pose une question autour de mon code.
Voici un extrait :
Je ne comprends pas pourquoi le programme ne plante pas. Est-ce que quelqu'un aurait une idée sur la question?
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 struct Complex { double dReal; double dImg; }; struct Matrix { long iMaxRow; long iMaxCol; Complex * cpxTab; }; void main() { Complex *pA, *pB, *pC; Matrix Matrice; // init de la structure matrice Matrice.iMaxRow=10; Matrice.iMaxCol=10; Matrice.cpxTab = (Complex *) malloc(Matrice.iMaxCol* Matrice.iMaxRow * sizeof(Complex)); //je remplie quelques complexes que je vais mettre dans mon tableau Matrice.cpxTab[2].dReal =1; Matrice.cpxTab[2].dImg =0; //connaissant iRow, iCol je peux me retrouver facilement dans le tableau : TabIndice=Matrice.iMaxRow*(iRow-1)+iCol-1 printf(" lecture de (9,2) %f\n", Matrice.cpxTab[81].dImg); //pas d'erreur ok printf(" lecture de (11,1) %f\n", Matrice.cpxTab[100].dImg); //pas d'erreur... ce qui me pose problème! }
Partager