Bonjour, désolé pour le titre pas très explicite mais il est assez difficile de donner un nom à ce problème.
Depuis quelques jours, j'ai un bug dans mon programme qui vient apparemment de malloc. J'ai donc essayé de réduire le code jusqu'à arriver à la ligne qui pose problème. Je ne sais pas si j'y suis arrivé mais en tout cas, j'en suis arrivé à un point où j'ai isolé, semble-t-il, un problème.
Ce code fonctionne bien.
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
40
41
42
43
44
45
46
47
48 #include <stdlib.h> #include <stdio.h> typedef struct { int bla; } tableau, *ptableau; typedef struct{ int bla; } bille, *pbille; typedef struct recordxxx{ unsigned int val; struct recordxxx* suiv; } record, *precord; typedef struct { unsigned short longueur; unsigned short largeur; double angle; pbille bille_prete; pbille bille_suivante; } canon, *pcanon; int main() { pcanon canon = NULL; ptableau jeu = NULL; precord records = NULL; jeu = (ptableau) malloc(sizeof(tableau)); records = (precord) malloc(sizeof(record)); canon = (pcanon) malloc(sizeof(canon)); // repere 1 canon->largeur = 10; canon->longueur = 100; system("pause"); // repere 2 canon->angle = 4; canon->bille_prete = (pbille) malloc(sizeof(bille)); canon->bille_suivante = (pbille) malloc(sizeof(bille)); printf("4\n"); system("pause"); return (EXIT_SUCCESS); }
Cependant, si vous supprimez le premier system("pause") (repere 2), ça ne marche plus : le programme freeze ou quitte brutalement. Si vous passez les 2 derniers malloc au niveau du repere 1, ça marche même si on enlève la pause.
Si vous avez des idées, je suis très preneur, merci.
Partager