Unix C++

Résolu/Fermé
narsise - Modifié par narsise le 5/05/2011 à 23:08
swoog42 Messages postés 1060 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 - 5 mai 2011 à 23:56
Bonsoir,
je vous remercie tout le monde d'avance pour l'aide.
j'ai un code avec C++ sur unix
et je rencontre l'erreur: erreur de segmentation
mon code:

switch(tab[i][j].x)
{
case 0:
{
if(tab[i][j].y==0 || tab[i][j].y==(col-1))
{
core_L[i][j]->initiator_socket.bind(NOD2[i][j]->T_local->target_socket);
cout<<"core_L["<<i<<j<<"]-->nod2["<<i<<j<<"]-->T_Local"<<endl;
NOD2[i][j]->ARB_L->initiator_socket.bind(slave_L[i][j]->target_socket);
cout<<"nod2["<<i<<j<<"]arb_L-->slave_L["<<i<<j<<"]"<<endl;

// NOD2[i][j]->ARB_S->initiator_socket.bind(NOD4[i+1][j]->T_N->target_socket);
// NOD4[i+1][j]->ARB_N->initiator_socket.bind(NOD2[i][j]->T_S->target_socket);
// cout<<"nod2-->S["<<i<<j<<"]nod4-->N["<<i<<j+1<<"]"<<endl;</gras>

}

}
}
l'erreur s'arrive lorsque j'ajout les lignes souligner

1 réponse

swoog42 Messages postés 1060 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
5 mai 2011 à 23:21
Question con : i et j sont initialisés ?
0
oui sont initialisés
0
swoog42 Messages postés 1060 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
5 mai 2011 à 23:25
a mon avis, l'indice i+1 déborde du tableau... Tu as un moyen de vérifier ?
0
j'ai pas compris?
0
swoog42 Messages postés 1060 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
Modifié par swoog42 le 5/05/2011 à 23:48
// NOD2[i][j]->ARB_S->initiator_socket.bind(NOD4[i+1][j]->T_N->target_socket);  
// NOD4[i+1][j]->ARB_N->initiator_socket.bind(NOD2[i][j]->T_S->target_socket); 


Tu as un indice [i+1] dans ces 2 lignes. Est-ce que tu ne débordes pas de la longueur du tableau ?
Par exemple, un tableau de 10 cases (de 0 à 9). Si i=9, alors i+1=10, donc erreur de segmentation car tu dépasse du tableau.
0
non j'ai vérifier cette truc
0