Erreur de segmentation après affichage d'un tableau d'entier
Bonsoir tout le monde
Avant que vous ne continuez la lecture du code, je tiens à vous dire que j'ai déjà lu le tutoriel sur les pointeurs en C et C++ de son auteur CGI sur développez.com et j'ai fait de mon mieux :oops: .
En fait, j'ai un fichier nommé share_application_TCB.C où est définie la structure
Code:
1 2 3 4 5 6 7 8 9
| typedef struct{
int version; //kernel version
int sub_version; //sub version
int ttcb_extentions; //TTCB enabled?
int number_of_system_machines; //number of machines
int* TCBneighlist ; // list of TTCB neighbors
int TCBlenneighlist; // longueur de la liste
}
tcb_kernel_info_t; |
J'ai également un autre fichier nommé tcb_module.C (ici j'utilise l'API du kernel) où j'ai déclaré deux variables globales et une fonction decideau sein delaquelle je modifie les valeurs des variables globales
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| cb_kernel_info_t kern_info; // la structure à modifier
int neighlist[20]; //tab intermediaire pour éviter erreurs de segmentations
void TTCBdecide(int fifo, decide_in_t *in)
{
// Au sein d'une boucle for
tailleEid = sscanf (existingID,"%d",&neighlist[j]);
kern_info.TCBneighlist=neighlist;
kern_info.TCBlenneighlist=j+1;
out.test=kern_info.TCBneighlist[j];
} |
Enfin, au sein du fichier ttcbneighborhood.C 'essaie d'effectuer l'opération d'affichage du contenu krn_info.TCBneighlist[j] mais je me confronte à une erreur de segmentation que je n'arrive pas à expliquer.
Code:
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
| int main()
{
//for kernel info 29_12_05
tcb_kernel_info_t krn_info;
int ret ;
int number_of_machines ;
int lenneighlist; // longuer du tableau des id
int k;
decide(&descriptor, outp.tag, &outd) //appel de la fonction decide qui met à jour la variable krn_info
//for kernel info 29_12_05
ret = getTCBKernelInfo(&descriptor, &krn_info); //j'appelle la fonction getTCBKernelInfo qui retourne la structure krn_info
if (ret < 0){
closeTCBConnection(&descriptor);
printTCBerror(ret);
printf("On getting TTCB kernel info...\n");
exit(1);
}
lenneighlist=krn_info.TCBlenneighlist;
printf ("Kernel Info : Le nombre d'entités impliquées est %d \n ",lenneighlist);
for (k=0;k<lenneighlist;k++)
printf ("Agreement Kernel Info : L'entité est %d \n ",krn_info.TCBneighlist[j]);
} |
Quelqu'un aurait-il- une idée et pourquoi printf me génère l'erreur de segmentation? Merci beaucoup de votre aide
Re: Erreur de segmentation après affichage d'un tableau d'en
Bonjour,
Citation:
Envoyé par NeilaK
share_application_TCB.C
L'extension doit être .c en minuscule sinon, si tu utilise gcc, il appellera le compilateur C++ :(