Segmentation fault Linux
Fermé
safir
-
4 nov. 2004 à 15:39
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 5 nov. 2004 à 18:56
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 5 nov. 2004 à 18:56
A voir également:
- Segmentation fault Linux
- Linux mint - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
- Fortnite linux ✓ - Forum Ubuntu
- Installer linux sans clé usb ✓ - Forum Ubuntu
3 réponses
Salut!
me parait douteux et pas standard. Macro non définie?
aucun type pour la fonction main et l'utilisaiton de 2 arguments non déclarés (type) avant leur utilisation
on a pour habitude de déclarer les macro en début de code (c'est plus jolie) mais dans ton code ça n'apporte pas plus de clarté de déclarer ces macros
pourquoi faire un typedef ici qui ne sert à rien?
idem
A mon avis le compilo a du trouver une mauvaise définition du type par typedef
normalement ça devrait ressembler à un ça
permet moi de remodeler ton code d'un façon plus clair à mes yeux
EXEC SQL INCLUDE SQLCA;
me parait douteux et pas standard. Macro non définie?
main(argc,argv)
aucun type pour la fonction main et l'utilisaiton de 2 arguments non déclarés (type) avant leur utilisation
#define AFFICHAGE 100 #define TAB1 1000 #define TAB2 60000 #define TAB3 50000
on a pour habitude de déclarer les macro en début de code (c'est plus jolie) mais dans ton code ça n'apporte pas plus de clarté de déclarer ces macros
/* Table test1 */ typedef struct st_test1 { /* Si cette declaration est en commentaire, le programme marche */ double taille; char rec_1[6]; }; struct st_test1 tab_test1[TAB3];
pourquoi faire un typedef ici qui ne sert à rien?
/* Table test2 */ typedef struct st_test2 { char vp[2]; char car[3]; char marque[4]; char modele[11]; char energie[2]; }; struct st_test2 tab_test2[TAB2];
idem
A mon avis le compilo a du trouver une mauvaise définition du type par typedef
normalement ça devrait ressembler à un ça
typedef ancientype nouveautype;
permet moi de remodeler ton code d'un façon plus clair à mes yeux
#include <stdlib.h> #include <stdio.h> typedef struct { double taille; char rec_1[6]; } st_test1; typedef struct { char vp[2]; char car[3]; char marque[4]; char modele[11]; char energie[2]; } st_test2; int main(int argc, char *argv[]) { st_test1 tab_test1[50000]; st_test2 tab_test2[60000]; printf("\n"); printf("################################\n"); printf("### ###\n"); printf("### PROG DEBUG ###\n"); printf("### ###\n"); printf("################################\n"); printf("\n"); return EXIT_SUCCESS; }
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
4 nov. 2004 à 20:40
4 nov. 2004 à 20:40
salut!
y'a juste un truc qui me chagrine dans cette source
j'aurais plutôt fait comme ça:
segmentation fault, la plupart du temps c'est un
pointeur auquel on n'a pas alloué assez de mémoire
(ici l'allocation est faite implicitement)
cordialement
¤
y'a juste un truc qui me chagrine dans cette source
j'aurais plutôt fait comme ça:
int main(int argc, char *argv[]) { return 0; }
segmentation fault, la plupart du temps c'est un
pointeur auquel on n'a pas alloué assez de mémoire
(ici l'allocation est faite implicitement)
cordialement
¤
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
5 nov. 2004 à 18:56
5 nov. 2004 à 18:56
salut,
Je viens de penser à un truc:
struct st_test1 tab_test1[50000]
j'ai déjà eu ce problème avec un enorme tableau statique du même genre.
ce que j'ai fait:
seulement il faut le déclarer dans une fonction et le passer par pointeur aux autres fonctions. Voilà, si ça peut te servir...
cordialement
¤
Je viens de penser à un truc:
struct st_test1 tab_test1[50000]
j'ai déjà eu ce problème avec un enorme tableau statique du même genre.
ce que j'ai fait:
// debut de la fonction struct st_test1 *tab_test1= (struct *st_test1) malloc (50000*sizeof(*tab_test1)); if(tab_test1==null)printf("probleme d'allocation"); // // // // fin de fonction: free (tab_test1);
seulement il faut le déclarer dans une fonction et le passer par pointeur aux autres fonctions. Voilà, si ça peut te servir...
cordialement
¤
4 nov. 2004 à 16:20
Jai utilisé le code après tes remarques et j'ai toujours la meme erreur.
Mais quand je mets la ligne :
st_test1 tab_test1[50000];
en commentaire ou je remplace 50000 par une taille plus petite ça marche.
Pour EXEC SQL INCLUDE SQLCA; C'est parce que c'est un PRO*C. Mais en tout cas on peut utiliser que le .c généré.
Merci