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.

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);
}
Ce code fonctionne bien.

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.