Unix C++

Résolu
narsise -  
swoog42 Messages postés 1178 Statut Membre -
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

  1. swoog42 Messages postés 1178 Statut Membre 245
     
    Question con : i et j sont initialisés ?
    0
    1. narsise
       
      oui sont initialisés
      0
    2. swoog42 Messages postés 1178 Statut Membre 245
       
      a mon avis, l'indice i+1 déborde du tableau... Tu as un moyen de vérifier ?
      0
    3. narsise
       
      j'ai pas compris?
      0
    4. swoog42 Messages postés 1178 Statut Membre 245
       
      // 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
    5. narsise
       
      non j'ai vérifier cette truc
      0