Bonjour,
Il semble que j'ai un problème de mémoire.
voici les extraits du programme qui posent problème :
et lorsque je compile, ça passe. Lorsque je lance, ça plante. En utilisant GDB, je m'aperçois que ça plante dès la ligne d'appel du main.
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 #define MAX_FONCTIONS_UTILISATEURS 50000 typedef struct { char* nom; int nb; int type; int debut; /* Numero de la ligne ou se trouve l'accolade de debut. */ int fin; /* Numero de la ligne ou se trouve l'accolade de fin : -1 => fonction non trouvee */ int nb_appels; /* Nombre d'appels interessant */ int nb_requetes_Sybase; int nb_requetes_Oracle; int nb_chaines_SQL; } lFU; typedef struct { lFU liste[MAX_FONCTIONS_UTILISATEURS]; int nb_fct_uti; } FU; ... int main(int argc, char** argv) { ... FU fu; ... }
en redéfinissant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Program received signal SIGSEGV, Segmentation fault. 0x0040fc63 in probe () (gdb) bt #0 0x0040fc63 in probe () #1 0x00401520 in mainCRTStartup () at lister_tables_batch.c:341
ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #define MAX_FONCTIONS_UTILISATEURS 40000
pourquoi est-ce que cela planterait à 50000 ??? la structure lFu n'est pas si énorme !!
Pour info, je suis sous environnement Cygwin Windows.
Partager